anchor.diff:                    ?RT:key(),    %% key
                     module(),     %% data type
                     crdt:query_fun() | crdt:update_fun(), %% fun used to read/write crdt state
  -                  replies()     %% aggregates replies
  +                  replies(),     %% aggregates replies
  +                  non_neg_integer() %% round trips executed
                    }.
   
   -type batch_entry() :: {read_batch_entry,
  
positive.code: 
  %%%%% strong consistent read
  
  on({req_start, {read, strong, Client, Key, DataType, QueryFun, PreviousRound}}, State) ->
      ReqId = uid:get_pids_uid(),
      Entry = entry_new_read(ReqId, Client, Key, DataType, QueryFun, DataType:new()),
      save_entry(Entry, tablename(State)),
  
      Round = case PreviousRound of
                  none ->
  
negative.code:                                                 Type,
                                                  entry_fun(NewEntry),
                                                  Type:new()),
                          T2Entry = entry_set_round_trips(TEntry, entry_round_trips(NewEntry) + 1),
                          %% keep the merged value we have collected in this phase, which will
                          %% be the value returned if phase 2 succeeds
                          NextStepEntry = entry_set_replies(T2Entry, NewReplies#r_replies{reply_count=0}),
                          save_entry(NextStepEntry, tablename(State)),
  
                          trace_mpath:log_info(self(), {read_strong_phase2_start,
  