anchor.diff:  
   %%@doc Prints a list of tuples showing which value is stored in which dht node
   %%     Format : [{Value, [list_of_dht_nodes_value_is_stored_in]}]
  -print_prbr_data(DB) ->
  +print_prbr_data(DB, Round) ->
       PrbrData = get_prbr_data(fun(NodePid, E) ->
                                   {prbr:entry_val(E), NodePid}
                                end, DB),
  
positive.code:             ct:pal("Missing elements are:~n~w", [Missing]),
              ct:pal("Printing missing element data..."),
              [print_element_data(E, kv_db) || E <- Missing],
              print_prbr_data(kv_db),
  
              100 = X
      end.
  
negative.code:                                 length(NodeList) <
                                   quorum:majority_for_accept(config:read(replication_factor))],
  
      Uniques = [length(lists:usort(NodeList)) || {_Entry, NodeList} <- WoBottom],
  
      {Min, Max} = case length(Uniques) of
                       0 -> {bottom, bottom};
                       _ -> {lists:min(Uniques), lists:max(Uniques)}
                   end,
  
      ct:pal("# unique replicas: min:~w; max:~w~n", [Min, Max]),
      ct:pal("PRBR state ~w:~nFormat [{Value, [list_of_dht_nodes_value_is_stored_in]}]~n"
             "~100p", [DB, GroupedValues]),
      case length(Bad) of
          0 -> true;
          _ -> ct:fail("entries with not enough replicas (round:~w, db=~w)", [Round, DB])
      end,
      ok.
  
  print_leases_data(Round) ->
      _ = [print_prbr_data({lease_db, I}, Round) || I <-
                               lists:seq(1, config:read(replication_factor))].
  
  print_element_data(Id, DB) ->
      HashedKey = ?RT:hash_key(integer_to_list(Id)),
  