anchor.diff:  handle_cast(unchoke, S) ->
       etorrent_peer_send:unchoke(S#state.send_pid),
       {noreply, S};
  -handle_cast(interested, S) ->
  -    {noreply, statechange_interested(S, true)};
  +handle_cast(interested, State) ->
  +    statechange_interested(State, true),
  +    {noreply, State#state{local_interested=true}};
   handle_cast({have, PN}, #state{remote_pieces=unknown, send_pid=SPid}=S) ->
       etorrent_peer_send:have(SPid, PN),
       {noreply, S};
  
positive.code:         seeder=(Left == 0)},
      case etorrent_piece_mgr:check_interest(TorrentID, Pieceset) of
          {interested, _} ->
              {ok, statechange_interested(NewState, true)};
          not_interested ->
              {ok, NewState};
          invalid_piece ->
  
negative.code:             Numchunks = ?HIGH_WATERMARK - N,
              case etorrent_chunk_mgr:request_chunks(TorrentID, Pieceset, Numchunks) of
                  {error, not_interested} ->
                      statechange_interested(State, false),
                      {ok, State#state{local_interested=false}};
                  {error, assigned} ->
                      {ok, State};
                  {ok, Chunks} ->
  