anchor.diff:              send(DestReconPid, {?check_nodes, comm:this(), Req, SigSize}),
               State#rr_recon_state{stats = Stats1,
                                    misc = [{signature_size, {SigSize, SigSize}},
  -                                         {p1e, P1E}],
  +                                         {p1e, {P1E_I, P1E_L}}],
                                    kv_list = []};
           false ->
               MerkleI = merkle_tree:get_interval(MySyncStruct),
  
positive.code:     min_max(util:ceil(util:log2(N / P1E)), 1, MaxSize).
  
  %% @doc Calculates from a total P1E the (next) P1E to use for signature and
  %%      sub-tree reconciliations.
  -spec merkle_next_p1e(BranchFactor::pos_integer(), P1ETotal::float()) -> P1E::float().
  merkle_next_p1e(BranchFactor, P1ETotal) ->
      % current node can make a mistake or any of its BranchFactor children
      % => current node's probability of 0 errors = P0E(child)^(BranchFactor+1)
      % however, we cannot use P0E=(1-P1E) since it is near 1 and its floating
      % point representation is sub-optimal!
      % => use Taylor expansion of P1E_next = 1 - (1-P1E)^(1/BranchFactor)
      BF = BranchFactor + 1,
      _P1E = P1ETotal / BF +
                (BF - 1) * P1ETotal * P1ETotal / (2 * BF * BF). % +O[p^3]
  
  %% @doc Calculates the new signature sizes based on the next P1E as in
  %%      merkle_next_p1e/2
  
negative.code: %%           util:ceil(
  %%             util:log2(
  %%               % note: see TODO above for P0E precision!
  %%               1 / (1 - math:pow(1 - P1E_L / (2 * BucketSize), 1 / L))
  %%                      )), 1, 160),
      % approx (Puiseux Series of the above):
      NextSigSizeL =
          min_max(
            util:ceil(
              (math:log(2 * BucketSize * L) - math:log(P1E_L)) / math:log(2) +
                  (1 - L) * P1E_L / (BucketSize * L * math:log(16))
                     ), 1, 160),
  
  %%     log:pal("P1E_I: ~p, \tP1E_L: ~p, \tSigSizeI: ~B, \tSigSizeL: ~B~n"
  %%             "Buckets: ~B, \tMyMI: ~B, \tOtMI: ~B, \tMyML: ~B, \tOtML: ~B",
  %%             [P1E_I, P1E_L, NextSigSizeI, NextSigSizeL,
  %%              BucketSize, MyMaxItemsCount, OtherMaxItemsCount, MyMaxLeafCount, OtherMaxLeafCount]),
      {P1E_I, P1E_L, NextSigSizeI, NextSigSizeL}.
  
  -compile({nowarn_unused_function, {min_max_feeder, 3}}).
  -spec min_max_feeder(X::number(), Min::number(), Max::number())
  