anchor.diff:  
   -type state() :: Table::tid() | atom().
   -type message() ::
  -    {proc_report, Process::atom(), Key::key(), OldValue::rrd:rrd(), Value::rrd:rrd()} |
  +    {report_rrd, Process::atom(), Key::key(), OldValue::rrd:rrd(), Value::rrd:rrd()} |
  +    {report_single, Process::atom(), Key::key(),
  +     NewValue_or_UpdateFun::term() | fun((Old::Value | undefined) -> New::Value)} |
       {web_debug_info, Requestor::comm:erl_local_pid()}.
   
   %% @doc Converts the given Key to avoid conflicts in erlang:put/get.
  
positive.code:              end,
      NewData = rrd:add_nonexisting_timeslots(MyData, OldValue),
      ets:insert(Table, {TableIndex, NewData}),
      Table;
  
  on({web_debug_info, Requestor}, Table) ->
  
negative.code:             end
      end.
  
  %% @doc Sets the value at Key inside the current process.
  %%      Either specify a new value or an update function which generates the
  %%      new value from the old one.
  %%      If a new time slot is started by updating the value, then the rrd()
  %%      record is send to the monitor process.
  -spec proc_set_value(Process::atom(), Key::key(),
                       NewValue_or_UpdateFun::term() | fun((Old::Value | undefined) -> New::Value)) -> ok.
  proc_set_value(Process, Key, UpdateFun) when is_function(UpdateFun, 1) ->
      InternalKey = to_internal_key(Key),
      OldValue = erlang:get(InternalKey),
      NewValue = UpdateFun(OldValue),
  