anchor.diff:  
   -define(REBALANCE_SUCCESSFUL, 1).
   -define(REBALANCE_FAILED, 2).
  +-define(REBALANCE_NOT_STARTED, 3).
   
   %% gen_server callbacks
   -export([init/1, handle_call/3, handle_cast/2,
  
positive.code: handle_cast({remaining_moves, M}, #state{moves=Moves, progress=Progress} =
                  State) ->
      P = [{Node, 1.0 - N / dict:fetch(Node, Moves)} || {Node, N} <- M],
      ?log_info("Remaining moves: ~p, progress: ~p", [M, P]),
      {noreply, State#state{progress=lists:ukeymerge(1, P, Progress)}};
  handle_cast({starting_moves, M}, State) ->
      {noreply, State#state{moves=dict:from_list(M)}}.
  
negative.code:             error_logger:error_msg("~p:promote_replicas(~p, ~p, ~p, ~p): No master~n", [?MODULE, Bucket, V, RemapNodes, Chain]),
              NewChainExtended;
          [NewMaster|_] ->
              %% The janitor will catch it if this fails.
              catch ns_memcached:set_vbucket_state(NewMaster, V, active),
              NewChainExtended
  