anchor.diff:          _ -> ok %nothing to do
       end.
   
  --spec reduce_timeslots(N::pos_integer(), State::state()) -> state().
  +-spec reduce_timeslots(N::pos_integer(), State::#state{}) -> #state{}.
   reduce_timeslots(N, State) ->
       State#state{perf_rr = rrd:reduce_timeslots(N, State#state.perf_rr),
                   perf_lh = rrd:reduce_timeslots(N, State#state.perf_lh)}.
   
  --spec integrate_values(OtherState::state(), MyState::state()) -> state().
  +-spec integrate_values(OtherState::#state{}, MyState::#state{}) -> #state{}.
   integrate_values(OtherState, MyState) ->
       MyPerfRR1 = integrate_value(OtherState#state.perf_rr, MyState#state.perf_rr),
       MyPerfLH1 = integrate_value(OtherState#state.perf_lh, MyState#state.perf_lh),
  
positive.code:     {gather_stats, SourcePid::comm:mypid(), Round::pos_integer()} |
      {{get_rrds_response, [{Process::atom(), Key::string(), DB::rrd:rrd() | undefined}]}, {SourcePid::comm:mypid(), Round::pos_integer()}} |
      {gather_stats_response, Round::pos_integer(), [{Process::atom(), Key::string(), Data::rrd:timing_type(number())}]} |
      {report_value, StatsOneRound::state()}.
  
  %-define(TRACE(X,Y), ct:pal(X,Y)).
  -define(TRACE(X,Y), ok).
  
negative.code:     {Sum + NewSum, Sum2 + NewSum2, Count + NewCount,
       erlang:min(Min, NewMin), erlang:max(Max, NewMax), NewHist2}.
  
  -spec check_timeslots(#state{}) -> #state{}.
  check_timeslots(State = #state{perf_rr = PerfRR, perf_lh = PerfLH}) ->
      State#state{perf_rr = rrd:check_timeslot_now(PerfRR),
                  perf_lh = rrd:check_timeslot_now(PerfLH)}.
  
  -spec broadcast_values(OldState::#state{}, NewState::#state{}) -> ok.
  broadcast_values(OldState, NewState) ->
      % broadcast the latest value only if a new time slot was started
      OldPerfRR = OldState#state.perf_rr,
  