anchor.diff:  		    S3 = opt(print_messages, S2, 
   			     fun(detail) -> {"decrypted bytes ~p~n",[SshPacket]} end),
   		    S3#s{ssh = inc_recv_seq_num(C3),
  -			 enc = Rest,
  +			 encrypted_data_buffer = Rest,
   			 return_value = Msg
   			}
   	    end
  
positive.code: 	{{Vp,Vs}, server} ->   S#s{ssh = C#ssh{c_vsn=Vp, c_version=Vs}}
      end.
  
  receive_binary_msg(S0=#s{ssh=C0=#ssh{decrypt_block_size = BlockSize,
  				     recv_mac_size = MacSize
  				    }
  			}) ->
      case size(S0#s.enc) >= max(8,BlockSize) of
  	false ->
  	    %% Need more bytes to decode the packet_length field
  	    Remaining = max(8,BlockSize) - size(S0#s.enc),
  	    receive_binary_msg( receive_wait(Remaining, S0) );
  	true ->
  	    %% Has enough bytes to decode the packet_length field
  	    {_, <<?UINT32(PacketLen), _/binary>>, _} =
  		ssh_transport:decrypt_blocks(S0#s.enc, BlockSize, C0), % FIXME: BlockSize should be at least 4
  
  	    %% FIXME: Check that ((4+PacketLen) rem BlockSize) == 0 ?
  
  
negative.code: 
  receive_wait(N, S=#s{socket=Sock,
  		     timeout=Timeout,
  		     encrypted_data_buffer=Enc0}) when N>0 ->
      inet:setopts(Sock, [{active,once}]),
      receive
  	{tcp,Sock,Data} ->
  	    receive_wait(N-size(Data), S#s{encrypted_data_buffer = <<Enc0/binary,Data/binary>>});
  	{tcp_closed,Sock} ->
  	    throw({tcp,tcp_closed});
  	{tcp_error, Sock, Reason} ->
  