anchor.diff:        exit({open_error, R, Filename})
     end.
   
  +wrap(Fun,line) -> Fun;
  +wrap(Fun,sax)  -> sax_f(Fun);
   wrap(Fun,xml)  -> Fun;
  -wrap(Fun,sax)  -> sax_f(Fun);
   wrap(Fun,term) -> term_f(Fun);
  -wrap(Fun,line) -> Fun.
  +wrap(Fun,zet)  -> Fun.
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %%% term funs
  
positive.code:          , xml/3
           , term/3
           , line/3
           , fold/4]).
  
  -define(BLOCK, 1048576).
  
negative.code: term(Filename,Fun,Acc) ->
   fold(Filename,Fun,Acc,[term]).
  
  zet(Filename,Fun,Acc) ->
   fold(Filename,Fun,Acc,[zet]).
  
  fold(Filename,Fun,Acc,Opts) ->
    Type = take_first(Opts,[line,sax,xml,term,zet]),
    case file:open(Filename, [read, raw, binary]) of
      {ok, FD} -> 
        try fold(read(FD),FD,wrap(Fun,Type),chunker(Type),?state(Acc,?tail_0()))
  