anchor.diff:            print_depth                  :: pos_integer(),
             rate_timestamp = timestamp() :: timestamp(),
             rate_prev = 0                :: non_neg_integer(),
  +          rate_width = 3               :: non_neg_integer(),
             streams = []                 :: [{stream(), [string()]}],
             timestamp = timestamp()      :: timestamp(),
             ticker = none                :: pid() | 'none' | 'show',
  
positive.code:   #logger_state{
       rate_timestamp = Old,
       rate_prev = Prev,
       traces_explored = Current,
       traces_ssb = TracesSSB
      } = State,
  
negative.code:   Time = timediff(New, Old),
    Useful = Current - TracesSSB,
    Diff = Useful - Prev,
    Rate = (Diff / (Time + 0.0001)) + 0.01,
    Width = max(OldWidth, trunc(math:log10(Rate)) + 3),
    WidthStr = [$0 + Width],
    RateStr = io_lib:format("(~"++WidthStr++".1f/s) ", [Rate]),
    NewState =
      State#logger_state{
        rate_timestamp = New,
        rate_prev = Useful,
        rate_width = Width},
    {RateStr, NewState}.
  
  separator_string(Char) ->
    lists:duplicate(80, Char).
  