anchor.diff:      0; % invalid but since there are 0 items, this is ok!
   shash_signature_sizes(ItemCount, OtherItemCount, P1E) ->
       % reduce P1E for the two parts here (hash and trivial phases)
  -    A = 1 - ?SHASH_B,
  +    P1E_sub = calc_n_subparts_p1e(2, P1E),
       % cut off at 128 bit (rt_chord uses md5 - must be enough for all other RT implementations, too)
  -    SigSize0 = calc_signature_size_nm_pair(ItemCount, OtherItemCount, A * P1E, 128),
  +    SigSize0 = calc_signature_size_nm_pair(ItemCount, OtherItemCount, P1E_sub, 128),
       % align if required
       Res = case config:read(rr_align_to_bytes) of
                 false -> SigSize0;
  
positive.code:          to_resolve         = {[], []}                               :: {ToSend::rr_resolve:kvv_list(), ToReq::[?RT:key()]}
           }).
  -type state() :: #rr_recon_state{}.
  
  % Optimum for reducing P1E for the two parts: key and version comparison (factor B for the latter)
  -define(TRIVIAL_B, 0.5).
  -define(SHASH_B, 0.5). % TODO: find optimum!
  % Optimum for reducing P1E for the two parts: bloom and trivial RC (factor B for the latter)
  -define(BLOOM_B, 0.5809402158035948). % 2*math:log(2) / (1+2*math:log(2))
  
  % keep in sync with check_node/5
  -define(recon_ok,                       1). % match
  
negative.code: 
  %% @doc Splits P1E into N equal independent sub-processes and returns the P1E
  %%      to use for each of these sub-processes: p_sub = 1 - (1 - p1e)^(1/n).
  %%      This is based on p0e(total) = (1 - p1e(total)) = p0e(each)^n = (1 - p1e(each))^n.
  -spec calc_n_subparts_p1e(N::pos_integer(), P1E::float()) -> P1E_sub::float().
  calc_n_subparts_p1e(N, P1E) when P1E > 0 andalso P1E < 1 ->
  %%     _VP = 1 - math:pow(1 - P1E, 1 / N).
  