anchor.diff:  
   %% @doc: Initialize the event handler.
   init(Options) ->
  -    case lists:keyfind(no_progress, 1, Options) of
  -        {no_progress} -> {ok, no_progress};
  -        false -> {ok, {0,0,1,0}}
  -    end.
  +    Log =
  +        case lists:keyfind(nolog, 1, Options) of
  +            {nolog} -> nolog;
  +            false -> log
  +        end,
  +    Progress =
  +        case lists:keyfind(noprogress, 1, Options) of
  +            {noprogress} -> noprogress;
  +            false -> {0,0,1,0}
  +        end,
  +    {ok, {Log, Progress}}.
   
   -spec terminate(term(), state()) -> 'ok'.
   terminate(_Reason, _State) -> ok.
   
   -spec handle_event(log:event(), state()) -> {'ok', state()}.
  -handle_event({msg, String}, State) ->
  +handle_event({msg, String}, {log,_Prog}=State) ->
       io:format("~s", [String]),
       {ok, State};
  -handle_event({error, _Ticket}, {Bound,Progress,Total,Errors}) ->
  +handle_event({msg, _String}, {nolog,_Prog}=State) ->
  +    {ok, State};
  +handle_event({error, _Ticket}, {Log, {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) ->
  +    {ok, {Log, {Bound,Progress,Total,Errors+1}}};
  +handle_event({error, _Ticket}, {_Log, noprogress}=State) ->
  +    {ok, State};
  +handle_event({progress_log, Remain}, {Log, {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}};
  +            {ok, {Log, {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}) ->
  +handle_event({progress_log, _Remain}, {_Log, noprogress}=State) ->
  +    {ok, State};
  +handle_event({progress_swap, NewTotal}, {Log, {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}.
  +    {ok, {Log, {NewBound,0,NewTotal,Errors}}};
  +handle_event({progress_swap, _NewTotal}, {_Log, noprogress}=State) ->
  +    {ok, State}.
   
   progress_bar(PerCent, Errors) ->
       Bar = string:chars($=, PerCent div 2, ">"),
  
positive.code: action_analyze([{Opt, _Files} | _Args], _Options)
          when (Opt =:= 'o') orelse (Opt =:= '-output') ->
      %% Found --output option with wrong parameters
      io:format("~s: wrong number of arguments for option -~s\n",
          [?APP_STRING, Opt]),
      init:stop(1);
  action_analyze([{Opt, [Preb]} | Args], Options)
          when (Opt =:= 'p') orelse (Opt =:= '-preb') ->
      %% Found --preb option
  
negative.code:                     case string:to_integer(N2) of
                          {N3, []} when (N3>0) andalso (N1<N3) -> {N1, N3};
                          _ when (N2=:="end") -> {N1, 'end'};
                          _ -> wrongArgument('type', 'n')
                      end;
                  _ -> wrongArgument('type', 'n')
              end
            end,
      NewNumbers = lists:map(Fun, Numbers),
  