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: 
  %% @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).
  -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).
  
negative.code:     case get_min_version_bits() of
          variable ->
              % reduce P1E for the two parts here (key and version comparison)
              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, P1E_sub, 128),
              % note: we have n one-to-one comparisons
              VP = calc_n_subparts_p1e(erlang:max(1, VCompareCount), P1E_sub),
              VSize0 = min_max(util:ceil(util:log2(1 / VP)), get_min_version_bits(), 128),
              ok;
          VSize0 ->
  