anchor.diff:  get_timestamp_secs({MegaSecs, Secs, _}) ->
       MegaSecs*1000000+Secs.
   
  --spec plot_add_now(PlotKey::atom(), Value::number()) ->
  -          ok | {error, autoscale_server_false | mgmt_server_false}.
  +-spec plot_add_now(PlotKey::atom(), Value::number()) -> boolean().
   plot_add_now(PlotKey, Value) ->
       ?IIF(config:read(autoscale_server),
           case MgmtServer = config:read(mgmt_server) of
  -            failed -> {error, mgmt_server_false};
  +            failed -> false;
               _      ->
                   comm:send(MgmtServer, {?send_to_group_member, autoscale_server,
                                          {collect, PlotKey, _Now = get_timestamp_secs(), Value}}),
                   true
           end,
  -        {error, autoscale_server_false}).
  +        false).
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   % config
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
positive.code:         1 -> breach_upper;
          2 -> breach_lower;
          3 -> ok
      end;
  check_alarm(_, _) ->
      unknown_alarm_handler.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % alarm helpers
  
negative.code: continue_alarm(Name, Secs, Pid, Epoch) ->
      msg_delay:send_local(Secs, Pid, {check_alarm, Name, Epoch}).
  
  -spec update_alarm(dict(), atom(), {atom(), any()} | [{atom(), any()}]) -> dict().
  update_alarm(Alarms, Name, {Field, NewValue}) ->
      update_alarm(Alarms, Name, [{Field, NewValue}]);
  update_alarm(Alarms, Name, [{Field, NewValue}|Tail]) ->
      UpdateFun = ?IIF(Field =:= epoch,
                       fun({_Alarm, _Epoch}) -> {_Alarm, NewValue} end,
                       fun({Alarm, Epoch}) -> {erlang:setelement(10, Alarm, NewValue), Epoch} end
                  ),
      NewAlarms = dict:update(Name, UpdateFun, Alarms),
      update_alarm(NewAlarms, Name, Tail);
  update_alarm(Alarms, _Name, []) ->
      Alarms.
  