anchor.diff:  get_apl_ann(DocIdx, N, Ring, UpNodes) ->
       UpNodes1 = ordsets:from_list(UpNodes),
       Preflist = riak_core_ring:preflist(DocIdx, Ring),
  +
       {Primaries, Fallbacks} = lists:split(N, Preflist),
       {Up, Pangs} = check_up(Primaries, UpNodes1, [], []),
  -    lists:reverse(Up) ++ find_fallbacks(Pangs, Fallbacks, UpNodes1, []).
  +    Up ++ find_fallbacks(Pangs, Fallbacks, UpNodes1, []).
   
   %% Same as get_apl, but returns only the primaries.
   -spec get_primary_apl(binary(), n_val(), atom()) -> preflist().
  
positive.code:                  get_apl(last_in_ring(), 3, Ring, [nodeb, nodec, noded])),
      %% With two nodes down
      ?assertEqual([{365375409332725729550921208179070754913983135744,nodec},
                    {0,nodec},
                    {182687704666362864775460604089535377456991567872,noded}],
                   get_apl(last_in_ring(), 3, Ring,  [nodec, noded])),
      %% With the other two nodes down
      ?assertEqual([{0,nodea},
  
negative.code:     Preflist = riak_core_ring:preflist(DocIdx, Ring),
      {Primaries, _} = lists:split(N, Preflist),
      {Up, _} = check_up(Primaries, UpNodes1, [], []),
      Up.
  
  %% Split a preference list into up and down lists
  -spec check_up(preflist(), [node()], preflist2(), preflist()) -> {preflist2(), preflist()}.
  check_up([], _UpNodes, Up, Pangs) ->
      {lists:reverse(Up), lists:reverse(Pangs)};
  check_up([{Partition,Node}|Rest], UpNodes, Up, Pangs) ->
      case is_up(Node, UpNodes) of
          true ->
  