anchor.diff:  
   %%
   
  +%% State = 
  +
  +find_dot(Data, State) ->
  +    find_dot(State, Data, []).
  +
  +find_dot(State, [], Acc) ->
  +    {more, State};
  +
  +find_dot(0, [$\r|R], Acc) ->
  +    find_dot(1, R, [$\r|Acc]);
  +find_dot(0, [C|R], Acc) ->
  +    find_dot(1, R, [C|Acc]);
  +
  +find_dot(1, [$\n|R], Acc) ->
  +    find_dot(2, R, [$\n|Acc]);
  +find_dot(1, R, Acc) ->
  +    find_dot(0, R, Acc);
  +
  +find_dot(2, [$.|R], Acc) ->
  +    find_dot(3, R, [$\.|Acc]);
  +find_dot(2, R, Acc) ->
  +    find_dot(0, R, Acc);
  +
  +find_dot(3, [$\r|R], Acc) ->
  +    find_dot(4, R, [$\r|Acc]);
  +find_dot(3, R, Acc) ->
  +    find_dot(0, R, Acc);
  +
  +find_dot(4, [$\n|R], Acc) ->
  +    {ok, 0, lists:reverse(Acc), R};
  +find_dot(4, R, Acc) ->
  +    find_dot(0, R, Acc).
  +
  
positive.code: 	  lines,
  	  reply=[],
  	  more=true,
  	  remain
  	 }).
  
  -record(satt, {
  
negative.code: 	{ok, Bin} ->
  	    Acc = binary_to_list(Bin),
  	    if
  		Remain == dot ->
  		    case find_dot(Acc, State#pstate.dotstate) of
  			{more, DotState} ->
  			    State2 = State#pstate{acc=[],
  						  dotstate=DotState,
  						  lines=[Acc|State#pstate.lines],
  						  more=true},
  			    {more, State2};
  			{ok, DotState, Lines, NAcc} ->
  			    
  			    State2 = State#pstate{acc=NAcc,
  						  dotstate=DotState,
  						  lines=[Lines|State#pstate.lines],
  						  more=false},
  			    {done, State2}
  		    end;
  		Remain =< length(Acc) ->
  		    {Lines, NAcc} = split_at(Acc, Remain),
  		    State2 = State#pstate{acc=NAcc,
  