anchor.diff:          keygroup_sorted(lists:merge(lists:sort(BuildDestinations0),
                                       lists:sort(BuildDestinations1))),
   
  +    ReplType = ns_bucket:replication_type(BucketConfig),
  +
       SomeEstimates0 = misc:parallel_map(
                          fun ({Node, VBs}) ->
  -                               {ok, Estimates} = janitor_agent:get_mass_tap_docs_estimate(BucketName, Node, VBs),
  -                               [{{Node, VB}, {VBEstimate, VBChkItems}} ||
  -                                   {VB, {VBEstimate, VBChkItems, _}} <- lists:zip(VBs, Estimates)]
  +                               {TapVBs, UprVBs} = replication_manager:split_partitions(VBs, ReplType),
  +                               {ok, TapEstimates} =
  +                                   janitor_agent:get_mass_tap_docs_estimate(BucketName, Node, TapVBs),
  +                               {ok, UprEstimates} =
  +                                   janitor_agent:get_mass_upr_docs_estimate(BucketName, Node, UprVBs),
  +
  +                               [{{Node, VB}, {VBEstimate, VBChkItems, tap}} ||
  +                                   {VB, {VBEstimate, VBChkItems, _}} <-
  +                                       lists:zip(TapVBs, TapEstimates)] ++
  +
  +                                   [{{Node, VB}, {VBEstimate, VBChkItems, upr}} ||
  +                                       {VB, {VBEstimate, VBChkItems, _}} <-
  +                                           lists:zip(UprVBs, UprEstimates)]
                          end, BuildDestinations, infinity),
   
   
  
positive.code: 
      Moves =
          [begin
               {_, {MasterEstimate, MasterChkItems}} = lists:keyfind({MasterNode, VB}, 1, SomeEstimates),
               RBStats =
                   [begin
                        {_, {ReplicaEstimate, _}} = lists:keyfind({Replica, VB}, 1, SomeEstimates),
                        Estimate = case ReplicaEstimate =< MasterEstimate of
                                       true ->
                                           %% in this case we assume no backfill
  
negative.code: -record(move_state, {vbucket :: vbucket_id(),
                       before_chain :: [node()],
                       after_chain :: [node()],
                       repl_type :: tap | upr,
                       stats :: [#replica_building_stats{}]}).
  
  -record(state, {bucket :: bucket_name() | undefined,
  