anchor.diff:  %% Check the read repairs - no need to worry about delete objects, deletes can only
   %% happen when all read repairs are complete.
   
  -check_repair(Objects, RepairH, H) ->
  +check_repair(Objects, RepairH, H, RRAbort) ->
       Actual = [ Part || {Part, ?KV_PUT_REQ{}} <- RepairH ],
       Heads  = merge_heads([ Lineage || {_, {ok, Lineage}} <- H ]),
       RepairObject  = (catch build_merged_object(Heads, Objects)),
  -    Expected =expected_repairs(H),
  +    Expected =expected_repairs(H,RRAbort),
       RepairObjects = [ Obj || {_Idx, ?KV_PUT_REQ{object=Obj}} <- RepairH ],
       conjunction(
           [{puts, equals(lists:sort(Expected), lists:sort(Actual))},
  
positive.code:                 [{result, equals(RetResult, ExpResult)},
                   {details, check_details(RetInfo, State)},
                   {n_value, equals(length(History), ExpectedN)},
                   {repair, check_repair(Objects, RepairHistory, History)},
                   {delete,  check_delete(Objects, RepairHistory, History, PerfectPreflist)},
                   {distinct, all_distinct(Partitions)},
                   {told_monitor, fsm_eqc_util:is_get_put_last_cast(get, GetPid)}
  
negative.code: do_repair(_Heads, _V) ->
      false.
  
  expected_repairs(_H, {_Soft,Hard,Actual,_Roll}) when Actual >= Hard ->
      [];
  expected_repairs(H, {Soft, Hard, Actual, Roll}) when Soft < Actual, Actual < Hard ->
      CapAdjusted = Hard - Soft,
      ActualAdjusted = Actual - Soft,
      Percent = ActualAdjusted / CapAdjusted * 100,
      if
        Roll < Percent ->
          [];
        true ->
          expected_repairs(H, true)
      end;
  expected_repairs(H,_RRAbort) ->
      case [ Lineage || {_, {ok, Lineage}} <- H ] of
          []   -> [];
          Lins ->
  