anchor.diff:                  timing = [] :: [{atom(), {non_neg_integer(), non_neg_integer(),
                                             non_neg_integer()}}],
                   reply, % reply sent to client,
  -                tracked_bucket=false :: boolean() %% tracke per bucket stats
  +                tracked_bucket=false :: boolean(), %% track per bucket stats
  +                bad_coordinators = [] :: [atom()]
                  }).
   
   -include("riak_kv_dtrace.hrl").
  
positive.code: %% @private
  prepare(timeout, StateData0 = #state{from = From, robj = RObj,
                                       bkey = BKey,
                                       options = Options}) ->
      BucketProps = riak_core_bucket:get_bucket(riak_object:bucket(RObj)),
      DocIdx = riak_core_util:chash_key(BKey),
      Bucket_N = proplists:get_value(n_val,BucketProps),
  
negative.code:             process_reply(Error, StateData0);
          _ ->
              StatTracked = proplists:get_value(stat_tracked, BucketProps, false),
              Preflist1 = case proplists:get_value(sloppy_quorum, Options, true) of
                              true ->
                                  UpNodes = riak_core_node_watcher:nodes(riak_kv),
                                  riak_core_apl:get_apl_ann(
                                    DocIdx, N, UpNodes -- BadCoordinators);
                              false ->
                                  riak_core_apl:get_primary_apl(DocIdx, N, riak_kv)
                          end,
              Preflist2 = [X || X = {{_Index, Node}, _Type} <- Preflist1,
                                not lists:member(Node, BadCoordinators)],
              %% Check if this node is in the preference list so it can coordinate
              LocalPL = [IndexNode || {{_Index, Node} = IndexNode, _Type} <- Preflist2,
                                  Node == node()],
  