anchor.diff:  
   disk_log_reader(File) -> 
       disk_log:open([{name, File}, {file, File}, {mode, read_only}]),
  -    {disk_log_reader_fun(File, start), []}.
  +    Fun = disk_log_reader_fun(File, start),
  +    Fun().
   
   disk_log_reader_fun(Name, Continuation) ->
       fun() ->
  
positive.code:         true -> 
              try merge_logs_ll(Tasks, FileName) 
              catch C:R ->
                  io:format("ERROR: failed due to error:~p~n", [{C,R}]),
                  {error, lists:flatten(io_lib:format("~p", [{C,R}]))}
              end;
          _ -> 
  
negative.code:                 {Continuation2, Items} -> 
                      Requests = lists:map(fun disk_log_item_process/1, Items),
                      {disk_log_reader_fun(Name, Continuation2), Requests};
                  eof -> disk_log:close(Name), eof;
                  Error -> throw({"Error while reading log", Name, Error})
              end
      end.
  
  csv_log_reader(File) -> 
      {ok, FH} = file:open(File, [read, binary]),
      Fun = csv_log_reader_fun({File, FH}, undefined),
      Fun().
  
              
  csv_log_reader_fun({Name, FH}, _Cont) ->
      fun() ->
              case io:get_line(FH, '') of
                  {error, Error} -> throw({"Error while reading log", Name, Error});
                  eof -> file:close(FH), eof;
                  "\n" -> csv_log_reader_fun({Name, FH}, undefined);
                  "\r\n" -> csv_log_reader_fun({Name, FH}, undefined);
                  Data -> 
                      Items = string:tokens(strip(binary_to_list(Data)), [$;]),
                      Request = csv_log_item_process(Items),
                      %io:format("Request:~p~n", [Request]),
                      {csv_log_reader_fun({Name, FH}, undefined), [Request]}
              end
      end.
  
  