anchor.diff:      Interested    = find_interested_peers(S#state.peer_process_dict),
   
       % N fastest interesteds should be kept
  -    {FastestInterested, Rest} =
  -	find_fastest_peers(?DEFAULT_NUM_DOWNLOADERS,
  +    {Downloaders, Rest} =
  +	find_fastest_downloaders(?DEFAULT_NUM_DOWNLOADERS,
   			   Interested),
  -    unchoke_peers(dict:fetch_keys(FastestInterested)),
  +    unchoke_peers(Downloaders),
   
       % All peers not interested should be unchoked
       unchoke_peers(dict:fetch_keys(NotInterested)),
  
positive.code: %%% Internal functions
  %%--------------------------------------------------------------------
  
  %%--------------------------------------------------------------------
  %% Function: perform_choking_unchoking(state()) -> state()
  %% Description: Peform choking and unchoking of peers according to the
  
negative.code:     % Choke everyone else
      choke_peers(Rest),
  
      DoNotTouchPids = sets:from_list(lists:map(fun({K, _V}) -> K end,
  					     Downloaders)),
      {S, DoNotTouchPids}.
  
  remove_optimistic_unchoking(S) ->
      peer_dict_map(fun(_K, PI) ->
  			  PI#peer_info{optimistic_unchoke = false}
  		  end,
  		  S).
  
  find_fastest_downloaders(N, Interested) ->
      List = lists:sort(
  	     fun ({_K1, PI1}, {_K2, PI2}) ->
  		     PI1#peer_info.downloaded > PI2#peer_info.downloaded
  	     end,
  	     dict:to_list(Interested)),
      PidList = lists:map(fun({K, _V}) -> K end, List),
      SplitPoint = lists:min([length(PidList), N]),
      {Downloaders, Rest} = lists:split(SplitPoint, PidList),
      {Downloaders, Rest}.
  
  unchoke_peers(Pids) ->
      lists:foreach(fun(P) -> torrent_peer:unchoke(P) end, Pids),
  