anchor.diff:  %% TODO: read repair...or another blog post?
   
   waiting({ok, ReqID, IdxNode, Obj},
  -        SD0=#state{from=From, num_r=NumR0, replies=Replies0,
  +        SD0=#state{from=From, num_r=NumR0,
                      r=R, n=N, timeout=Timeout}) ->
       NumR = NumR0 + 1,
  -    Replies = [{IdxNode, Obj} | Replies0],
  -    SD = SD0#state{num_r=NumR, replies=Replies},
  +    SD = save_reply(IdxNode, Obj, SD0#state{num_r = NumR}),
  +    Replies = SD#state.replies,
       case NumR of
           Min when Min >= R ->
               case merge(SD0, Replies) of
  
positive.code:                         [R, Ress]),
              not_found;
          false ->
              Res = lists:foldl(fun merge_compressed/2, decompress(DH), DT),
              {R, Res}
      end.
  
  -dialyzer({nowarn_function, merge_compressed/2}).
  merge_compressed(Acc, New) ->
      mmath_bin:merge(Acc, decompress(New)).
  
  %% Snappy :(
  -dialyzer({nowarn_function, decompress/1}).
  
negative.code: %%%===================================================================
  %%% Internal Functions
  %%%===================================================================
  -spec save_reply(partition(), term(), state()) -> state().
  save_reply(IdxNode, Obj, SD = #state{system = event, replies = Replies0}) ->
      Replies = [{IdxNode, Obj} | Replies0],
      SD#state{replies = Replies};
  save_reply(IdxNode, Obj, SD = #state{system = metric, replies = Replies0}) ->
      {Res, Metrics} = Obj,
      Replies = [{IdxNode, {Res, decompress(Metrics)}} | Replies0],
      SD#state{replies = Replies}.
  
  -spec merge(state(), [E]) -> E.
  merge(#state{system = event}, Events) ->
      merge_events(Events);
  