anchor.diff:      end,
   
       %% Select the requested number of secondaries from the whole list:
  -    TargetSecondaries = lists:sublist(get_secondaries(), NVnodes),
  -
  -io:format("JFW: TargetSecondaries: ~p~n", [TargetSecondaries]),
  -
  -    io:format("Seeding ~p objects of size ~p to ~p nodes...~n", [NObjs, ValueSize, NVnodes]),
  -    lists:map(fun(Secondary) -> seed_data({NObjs, ValueSize}, Secondary) end, TargetSecondaries),
  -
  -    io:format("Done seeding, forcing handoff.~n"),
  -    riak_core_vnode_manager:force_handoffs(),
  -
  -    io:format("Ok.~n"),
  -
  -    true.
  +    lists:sublist(get_secondaries(), NVnodes).
  +
  +%% Construct a list of target vnodes such that we select a total of N vnodes from different nodes,
  +%% round-robin fashion:
  +gather_vnodes_rr(NVnodes) ->
  +    Secondaries = get_secondaries(),
  +    lager:info("JFW: gather_vnodes_rr: choosing from ~p secondaries", [Secondaries]).
  +
  +%%
  +%% Selection utilities:
  +%%
   
   %% Select secondary handoff vnodes (ones we don't own):
   get_secondaries() ->
  
positive.code:     go(1, {NObjs, ValueSize}).
  
  go(NVnodes, {NObjs, ValueSize}) ->
  
      Secondaries = get_secondaries(),
  
      case length(Secondaries) >= NVnodes of
  
negative.code:     { ok, Ring } = riak_core_ring_manager:get_raw_ring(),
      riak_core_ring:all_owners(Ring).
  
  %%
  %% Data object utilities:
  %%
  
  %% Construct test handoff objects and send them to the requested vnode:
  seed_data({0, _Size}, _SecondarySHA1) ->
  