anchor.diff:      BinChecksum = checksum:bin_to_hexbin(Checksum),
       BinFilename = list_to_binary(lists:last(filename:split(Filename))),
   
  -    F = fun({newline, NewLine}, Ctx0) ->
  -                {ok, Ctx} = parse_line(NewLine, Ctx0),
  -                Ctx;
  -           (_, Ctx0) -> Ctx0
  +    F = fun({newline, NewLine}, {LineNo, Ctx0}) ->
  +                {ok, Ctx} = parse_line(NewLine, LineNo, Ctx0),
  +                {LineNo+1, Ctx};
  +           (_, {LineNo, Ctx0}) -> {LineNo+1, Ctx0}
           end,
   
       InitCtx = {undefined, [], #recept{file=BinFilename, checksum=BinChecksum}},
  -    {ok, ResultCtx} = ecsv:process_csv_string_with(lists:flatten(Lines), F, InitCtx),
  +    {ok, {Total, ResultCtx}} = ecsv:process_csv_string_with(lists:flatten(Lines), F, {0, InitCtx}),
       {Recept, Records0, _} = ResultCtx,
   
       Records1 = case Recept of
  
positive.code:     %% meddatum:log(">>>> => ~ts~n", [unicode:characters_to_binary(Entry, utf8)]),
      {ok, {Name, unicode:characters_to_binary(Entry, unicode)}};
  check_type({Name, gyymm, 5}, Entry) ->
      {ok, {Name, list_to_binary(Entry)}};
  check_type({Name, gyymmdd, 7}, Entry) ->
      {ok, {Name, list_to_binary(Entry)}};
  check_type({Name, jy_code, _}, Entry) when length(Entry) =:= 1 ->
      {ok, {Name, unicode:characters_to_binary(Entry)}}.
  
  
negative.code:                        NewList = lists:reverse(Recept#recept.segments),
                         [Recept#recept{segments=NewList}|Records0]
                 end,
      _ = lager:info("~p records for ~p lines.~n", [length(Records1), Total]),
  
      case InfoExtractor of
          undefined -> Records1;
  