anchor.diff:      etorrent_peer_control:choke(P#rechoke_info.pid),
       rechoke_choke(Next, Count, Optimistics);
   rechoke_choke([P | Next], Count, Optimistics) ->
  -    case P#rechoke_info.kind =:= seeding of
  +    case P#rechoke_info.peer_state =:= seeding of
           true ->
               etorrent_peer_control:choke(P#rechoke_info.pid),
               rechoke_choke(Next, Count, Optimistics);
  
positive.code:             end
      end.
  
  split_preferred_peers([], Downs, Leechs) ->
      {Downs, Leechs};
  split_preferred_peers([P | Next], Downs, Leechs) ->
      case P#rechoke_info.kind =:= seeding
            orelse P#rechoke_info.r_interest_state =:= not_interested of
          true ->
              split_preferred_peers(Next, Downs, Leechs);
          false when P#rechoke_info.state =:= seeding ->
              split_preferred_peers(Next, Downs, [P | Leechs]);
          false when P#rechoke_info.snubbed =:= true ->
              split_preferred_peers(Next, Downs, Leechs);
          false ->
              split_preferred_peers(Next, [P | Downs], Leechs)
      end.
  
  %%====================================================================
  
negative.code:             end
      end.
  
  %% Gather information about each Peer so we can choose which peers to
  %%  bet on for great download/upload speeds. Produces a #rechoke_info{}
  %%  list out of peers containing all information necessary for the choice.
  -spec build_rechoke_info(set(), [pid()]) -> [#rechoke_info{}].
  build_rechoke_info(_Seeding, []) -> [];
  build_rechoke_info(Seeding, [Pid | Next]) ->
      case etorrent_table:get_peer_info(Pid) of
          not_found -> build_rechoke_info(Seeding, Next);
          {peer_info, PeerState, Id} ->
              {value, Snubbed, St} = etorrent_rate_mgr:get_state(Id, Pid),
              case lookup_info(Seeding, Id, Pid) of
                  none -> build_rechoke_info(Seeding, Next);
                  {State, R} -> [#rechoke_info {
                                      pid = Pid,
                                      peer_state = PeerState,
                                      state = State,
                                      rate = R, % TODO: Rate is negative if leeching! Investigate!
                                      r_interest_state = proplists:get_value(interest_state, St),
                                      r_choke_state    = proplists:get_value(choke_state, St),
                                      l_choke          = proplists:get_value(local_choke, St),
                                      snubbed = Snubbed } |
                              build_rechoke_info(Seeding, Next)]
              end
  