anchor.diff:                      _ ->
                           [P|[LineSize|lists:sublist(StrFields,ColumnCount)]]
                   end,
  -                {P + LineSize, [list_to_tuple([?CSV_RECORD_NAME|WithSizeFields])|Recs]}
  +                {P + LineSize, [list_to_tuple([?CSV_RECORD_NAME|[File|WithSizeFields]])|Recs]}
               end,
               {LastPos,RevRecs} = lists:foldl(RecFold,{Pos,[]},Lines),
  +            RevRecsLength = length(RevRecs),
  +            {AllRecs, RowsSkipped1} = if
  +                (RowsSkipped == Skip) ->    
  +                    {lists:reverse(RevRecs), RowsSkipped};
  +                (RowsSkipped + RevRecsLength) =< Skip  ->   
  +                    {[], Skip};
  +                true ->   
  +                    {_, R} = lists:split(Skip-RowsSkipped,lists:reverse(RevRecs)),
  +                    {R, Skip}
  +            end,
               Filter = fun(_Record) -> true end,                  % ToDo: add predicate filtering with compiled matchspec
  -            AllNewRows = Rows ++ list:reverse(lists:filter(Filter, RevRecs)), % ToDo: adapt new BlockSize to situation
  +            AllNewRows = Rows ++ lists:filter(Filter, AllRecs), % ToDo: adapt new BlockSize to situation
               if 
                   length(AllNewRows) < RowLimit -> 
                       NewPos = LastPos + element(3,hd(RevRecs)),
  -                    read_blocks(Io, NewPos, BlockSize, RowLimit, CsvOpts, AllNewRows);
  +                    read_blocks(Io, File, NewPos, BlockSize, RowLimit, RowsSkipped1, CsvOpts, AllNewRows);
                   length(AllNewRows) > RowLimit -> 
                       NewRows = Rows ++ lists:sublist(AllNewRows, RowLimit), 
                       NewPos = element(2,lists:nth(RowLimit+1,AllNewRows)),
  -                    {NewRows, continuation(Io, NewPos, BlockSize, RowLimit, CsvOpts)};
  +                    {NewRows, continuation(Io, File, NewPos, BlockSize, RowLimit, RowsSkipped1, CsvOpts)};
                   true -> 
                       NewPos = LastPos + element(3,hd(RevRecs)),
  -                    {AllNewRows, continuation(Io, NewPos, BlockSize, RowLimit, CsvOpts)}
  +                    {AllNewRows, continuation(Io, File, NewPos, BlockSize, RowLimit, RowsSkipped1, CsvOpts)}
               end;
           eof -> 
               file:close(Io),
  
positive.code:     file_info_col_sep(File, Opts, file_sample(File,Opts));
  file_info_col_sep(File, #{lineSeparator := LineSeparator} = Opts, BinData) ->
      Rows = binary:split(BinData, LineSeparator, [global]),
      SepCounts = [{count_char_seq(BinData,Sep),Sep} || Sep <- [<<"\t">>,<<";">>,<<",">>]],
      SepList = [S || {_,S} <- lists:reverse(lists:usort(SepCounts))],
      file_info_col_count(File, pick_col_separator(Rows, Opts, SepList), BinData).
  
  
negative.code:                                , {<<"utf8">>,encoding,utf8}
                                 , {<<"ansi">>,encoding,ansi}
                                 % , {<<"123">>,columnCount,123}  % specially treated
                                 % , {<<"skip123">>,skip,123}
                                 ]).
  
  % gen_server
  