anchor.diff:    inject(RemoteIp, Ip, Data),
     ok.
   
  -fin_callouts(Ss, [_Ip, _Port, _RemoteIp, _RemotePort, _Seq, _, Id]) ->
  -  [ S ] = [ S || S<-Ss, S#socket.id == Id ],
  +fin_callouts(S, [_Ip, _Port, _RemoteIp, _RemotePort, _Seq, _, Id]) ->
  +  Sock = get_socket(S, Id),
     ?INC(Id, rseq),
     ?APPLY(sent_ack, [Id]),
  -  case S#socket.tcp_state of
  +  case Sock#socket.tcp_state of
       established ->
         ?SET(Id, tcp_state, close_wait);
       fin_wait_1 ->
  -      case S#socket.seq == S#socket.rcvd of %% FIN+ACK ?
  +      case Sock#socket.seq == Sock#socket.rcvd of %% FIN+ACK ?
           true ->
             ?UNBLOCK({close, Id}, ok),
             ?SET(Id, tcp_state, time_wait);
  
positive.code:       ?SET(Id, tcp_state, time_wait);
      last_ack ->
        ?UNBLOCK({close, Id}, ok),
        ?APPLY(reset, [Id]),
        ?SET(Id, tcp_state, closed)
    end.
  
  %% --- fin ---
  
negative.code: %%   in_tcp_state(S, [listen, syn_rcvd, established, close_wait]) andalso
  %%   S#socket.socket_type == listen.
  
  %% We cannot accept when we closed the listen socket, it's not there any more!
  
  accept_pre(S) ->
    [] /= S#state.sockets.
  
  