anchor.diff:      % note: it may happen that the new value created a new slot which already
       % discarded all logged data from the previous (unreported) time slot
       % -> send OldValue, too
  -    comm:send_local(MyMonitor, {proc_report, Process, Key, OldValue, Value}).
  +    comm:send_local(MyMonitor, {report_rrd, Process, Key, OldValue, Value}).
   
   %% @doc Message handler when the rm_loop module is fully initialized.
   -spec on(message(), state()) -> state().
  -on({proc_report, ProcTable, Key, OldValue, _NewValue}, Table) ->
  +on({report_rrd, Process, Key, OldValue, _NewValue}, Table) ->
       % note: reporting is always done when a new time slot is created
       % -> use the values from the old value
  -    TableIndex = {ProcTable, Key},
  +    TableIndex = {Process, Key},
       MyData = case ets:lookup(Table, TableIndex) of
                    [{TableIndex, X}] -> X;
                    []      ->
  
positive.code:              end,
      NewData = rrd:add_nonexisting_timeslots(MyData, OldValue),
      ets:insert(Table, {TableIndex, NewData}),
      Table;
  
  on({web_debug_info, Requestor}, Table) ->
  
negative.code: -include("scalaris.hrl").
  
  -export([start_link/1, init/1, on/2, check_config/0]).
  % (temporarily) storing monitoring values in the calling process:
  -export([proc_set_value/3, proc_get_value/2, proc_exists_value/2]).
  % sending monitoring values to the monitor process
  -export([monitor_set_value/3]).
  
  -type key() :: string().
  -type internal_key() :: {'$monitor$', Key::string()}.
  