anchor.diff:  %% Each timing stage has start time.
   calc_timing([], StageEnd, ReplyNow, Stages) ->
       %% StageEnd is prepare time
  -    {timer:now_diff(ReplyNow, StageEnd), Stages}; 
  +    {timer:now_diff(ReplyNow, StageEnd), Stages};
   calc_timing([{reply, ReplyNow}|_]=Timing, StageEnd, undefined, Stages) ->
       %% Populate ReplyNow then handle normally.
       calc_timing(Timing, StageEnd, ReplyNow, Stages);
  
positive.code: add_timing(Stage, State = #state{timing = Timing}) ->
      State#state{timing = [{Stage, os:timestamp()} | Timing]}.
  
  %% Calc timing information - stored as {Stage, StageStart} in reverse order. 
  %% ResponseUsecs is calculated as time from reply to start.
  calc_timing([{Stage, Now} | Timing]) ->
      ReplyNow = case Stage of
  
negative.code:             %% This node is not in the preference list
              %% forward on to the first node
              [{{_Idx, CoordNode},_Type}|_] = Preflist2,
              Timeout = get_option(timeout, Options, ?DEFAULT_TIMEOUT),
              case rpc:call(CoordNode,riak_kv_put_fsm_sup,start_put_fsm,[CoordNode,[From,RObj,Options]],Timeout) of
                  {ok, _Pid} ->
                      riak_kv_stat:update(coord_redir),
                      {stop, normal, StateData0};
                  {_, Reason} -> % {error,_} or {badrpc,_}
                      lager:error("Unable to forward put for ~p to ~p - ~p\n",
                                  [BKey, CoordNode, Reason]),
                      process_reply({error, {coord_handoff_failed, Reason}}, StateData0)
  