anchor.diff:  
       % TODO: expose duration as instrumentation/metric
       Duration = erlang:monotonic_time(millisecond) - Start,
  -    lager:debug("flush duration: ~w ms", [Duration]),
   
       State0 = State#state{counters=Counters,
                            timers=Timers,
                            gauges=Gauges,
                            sets=Sets},
   
  -    {noreply, schedule_flush(State0, Duration)};
  +    {noreply, schedule_flush(State0)};
   
   handle_info(_Info, State) ->
       {noreply, State}.
  
positive.code:     end.
  
  
  schedule_flush(State) ->
      schedule_flush(State, 0).
  
  schedule_flush(#state{config=Config} = State, Correction) ->
      % TODO: maybe we want to synchronize the flush interval with
      % the wall clock time matching with the graphite aggregation
      Duration = Config#udp_config.interval - Correction - ?BASE_TIMER_CORRECTION,
      Timer = erlang:send_after(Duration, self(), flush),
      State#state{flush_timer=Timer}.
  
  
negative.code: 
  -define(DELIMITER_PIPE, <<"|">>).
  -define(DELIMITER_COLON, <<":">>).
  -define(BASE_TIMER_CORRECTION, 50).
  
  %%%===================================================================
  %%% API
  