anchor.diff:  map_args(one_or_more, F, _D, A) ->
       L = lists:append(A),
       case length(L) of
  -    0 -> erlang:error(one_or_more);
  -    _ -> F(L)
  +        0 -> erlang:error(one_or_more);
  +        _ -> F(L)
       end;
   map_args(many, F, _D, A) -> F(lists:append(A));
   map_args(multiple, F, _D, A) -> F(A);
   map_args(N, F, _D, A) when is_function(F, N) ->
       L = lists:append(A),
       case length(L) of
  -    N -> apply(F, L);
  -    X -> erlang:error({wrong_number_of_args, X, N})
  +        N -> apply(F, L);
  +        X -> erlang:error({wrong_number_of_args, X, N})
       end;
   map_args(N, F, _D, A) when is_function(F, 1) ->
       L = lists:append(A),
  
positive.code: 
  parse_arguments(Opts, Args) ->
      try lists:map(fun
                ({K, N, F, D}) -> {K, map_args(K, N, F, D, proplists:get_all_values(K, Args))};
                ({K, N, F}) ->
                    case proplists:get_all_values(K, Args) of
                    [] -> erlang:error({missing_option, K});
                    A -> {K, map_args(K, N, F, undefined, A)}
                    end
                end, Opts) of
      Options -> {ok, Options}
      catch
      error:{missing_option, K} -> {missing_option, K};
      error:{parse_error, Reason, K, A} -> {parse_error, Reason, K, A}
      end.
  
negative.code:     NumReports = proplists:get_value(n, Options),
      rb:start([{report_dir, Dir}, {type, Types}, {max, NumReports}]),
      case RegExp of
          undefined -> rb:show();
          E -> io:format("grepping for ~p~n", [E]), rb:grep(E)
      end.
  
  get_logs_as_file(Types, NumReports, RegExp) ->
  