anchor.diff:  %%--------------------------------------------------------------------
   recv_message(Rate, Message) ->
       MSize = size(Message),
  -    Decoded = case Message of
  -	<<>> ->
  -	    keep_alive;
  -	<<?CHOKE>> ->
  -	    choke;
  -	<<?UNCHOKE>> ->
  -	    unchoke;
  -	<<?INTERESTED>> ->
  -	    interested;
  -	<<?NOT_INTERESTED>> ->
  -	    not_interested;
  -	<<?HAVE, PieceNum:32/big>> ->
  -	    {have, PieceNum};
  -	<<?BITFIELD, BitField/binary>> ->
  -	    {bitfield, BitField};
  -	<<?REQUEST, Index:32/big, Begin:32/big, Len:32/big>> ->
  -	    {request, Index, Begin, Len};
  -	<<?PIECE, Index:32/big, Begin:32/big, Data/binary>> ->
  -	    {piece, Index, Begin, Data};
  -	<<?CANCEL, Index:32/big, Begin:32/big, Len:32/big>> ->
  -	    {cancel, Index, Begin, Len};
  -	<<?PORT, Port:16/big>> ->
  -	    {port, Port}
  -    end,
  +    Decoded =
  +	case Message of
  +	    <<>> ->
  +		keep_alive;
  +	    <<?CHOKE>> ->
  +		choke;
  +	    <<?UNCHOKE>> ->
  +		unchoke;
  +	    <<?INTERESTED>> ->
  +		interested;
  +	    <<?NOT_INTERESTED>> ->
  +		not_interested;
  +	    <<?HAVE, PieceNum:32/big>> ->
  +		{have, PieceNum};
  +	    <<?BITFIELD, BitField/binary>> ->
  +		{bitfield, BitField};
  +	    <<?REQUEST, Index:32/big, Begin:32/big, Len:32/big>> ->
  +		{request, Index, Begin, Len};
  +	    <<?PIECE, Index:32/big, Begin:32/big, Data/binary>> ->
  +		{piece, Index, Begin, Data};
  +	    <<?CANCEL, Index:32/big, Begin:32/big, Len:32/big>> ->
  +		{cancel, Index, Begin, Len};
  +	    <<?PORT, Port:16/big>> ->
  +		{port, Port};
  +	    %% FAST EXTENSION MESSAGES
  +	    <<?SUGGEST, Index:32/big>> ->
  +		{suggest, Index};
  +	    <<?HAVE_ALL>> ->
  +		have_all;
  +	    <<?HAVE_NONE>> ->
  +		have_none;
  +	    <<?REJECT_REQUEST, Index:32, Offset:32, Len:32>> ->
  +		{reject_request, Index, Offset, Len};
  +	    <<?ALLOWED_FAST, FastSet/binary>> ->
  +		{allowed_fast, decode_allowed_fast(FastSet)}
  +	end,
       {Decoded, etorrent_rate:update(Rate, MSize), MSize}.
   
   %%--------------------------------------------------------------------
  
positive.code: -define(CANCEL, 8:8).
  -define(PORT, 9:8).
  
  %%====================================================================
  %% API
  %%====================================================================
  
negative.code: 	    {cancel, Index, Begin, Len} ->
  		<<?CANCEL, Index:32/big, Begin:32/big, Len:32/big>>;
  	    {port, PortNum} ->
  		<<?PORT, PortNum:16/big>>;
  	    %% FAST EXTENSION
  	    {suggest, Index} ->
  		<<?SUGGEST, Index:32>>;
  	    have_all ->
  		<<?HAVE_ALL>>;
  	    have_none ->
  		<<?HAVE_NONE>>;
  	    {reject_request, Index, Offset, Len} ->
  		<<?REJECT_REQUEST, Index, Offset, Len>>;
  	    {allowed_fast, FastSet} ->
  		BinFastSet = encode_fastset(FastSet),
  		<<?ALLOWED_FAST, BinFastSet>>
          end,
      Sz = size(Datagram),
      Res = gen_tcp:send(Socket, <<Sz:32/big, Datagram/binary>>),
  