anchor.diff:  init(Options) ->
       case lists:keyfind(no_progress, 1, Options) of
           {no_progress} -> {ok, no_progress};
  -        false -> {ok, {0,0,1}}
  +        false -> {ok, {0,0,1,0}}
       end.
   
   -spec terminate(term(), state()) -> 'ok'.
  
positive.code: %%%----------------------------------------------------------------------
  
  %% Log event handler internal state.
  -type state() :: {non_neg_integer(), non_neg_integer(), non_neg_integer()}.
  
  %% Command line options
  -type options() ::
  
negative.code: handle_event({msg, String}, State) ->
      io:format("~s", [String]),
      {ok, State};
  handle_event({error, _Ticket}, {Bound,Progress,Total,Errors}) ->
      progress_bar(Progress, Errors+1),
      {ok, {Bound,Progress,Total,Errors+1}};
  handle_event({error, _Ticket}, no_progress) ->
      {ok, no_progress};
  handle_event({progress_log, Remain}, {Bound,Progress,Total,Errors}=State) ->
      NewProgress = erlang:trunc(100 - Remain*100/Total),
      case NewProgress > Progress of
          true ->
              progress_bar(NewProgress, Errors),
              {ok, {Bound,NewProgress,Total,Errors}};
          false ->
              {ok, State}
      end;
  handle_event({progress_log, _Remain}, no_progress) ->
      {ok, no_progress};
  handle_event({progress_swap, NewTotal}, {Bound,_Progress,_Total,Errors}) ->
      %% Clear last two lines from screen
      io:format("\r\033[K\033[1A\033[K"),
      NewBound = Bound+1,
      io:format("Preemption: ~p\n", [NewBound]),
      {ok, {NewBound,0,NewTotal,Errors}};
  handle_event({progress_swap, _NewTotal}, no_progress) ->
      {ok, no_progress}.
  
  progress_bar(PerCent, Errors) ->
      Bar = string:chars($=, PerCent div 2, ">"),
      StrPerCent = io_lib:format("~p", [PerCent]),
      io:format("\r\033[K ~3s% [~.51s]  ~p errors found",
          [StrPerCent, Bar, Errors]).
  