anchor.diff:      Sink:gauge([K2,"ets"], proplists:get_value(ets, Mem), 1.00),
   
       %% Incremental values
  -    #state{prev_io={OldIn,OldOut}, prev_gc={OldGCs,OldWords,_}} = S,
  -    {{input,In},{output,Out}} = erlang:statistics(io),
  -    GC = {GCs, Words, _} = erlang:statistics(garbage_collection),
  -
  -    Sink:increment([K,"io.bytes_in"], In-OldIn, 1.00),
  -    Sink:increment([K,"io.bytes_out"], Out-OldOut, 1.00),
  -    Sink:increment([K,"gc.count"], GCs-OldGCs, 1.00),
  -    Sink:increment([K,"gc.words_reclaimed"], Words-OldWords, 1.00),
  +    IO = write_io_stats(Sink, [K, "io."], S),
  +    GC = write_gc_stats(Sink, [K, "gc."], S),
   
       %% Reductions across the VM, excluding current time slice, already incremental
       {_, Reds} = erlang:statistics(reductions),
  
positive.code:     catch
          error:badarg -> false
      end.
  
negative.code: init({Sink, BaseKey}) ->
      {ok, Delay} = application:get_env(vmstats, delay),
      Ref = erlang:start_timer(Delay, self(), ?TIMER_MSG),
      {{input, In}, {output, Out}} = erlang:statistics(io),
      {GCs, Words, _} = erlang:statistics(garbage_collection),
  
      State = #state{key = [BaseKey, $.],
                     sink = Sink,
                     timer_ref = Ref,
                     delay = Delay,
                     prev_io = {In, Out},
                     prev_gc = {GCs, Words}},
  
      case {sched_time_available(), application:get_env(vmstats, sched_time)} of
          {true, {ok,true}} ->
  