anchor.diff:  
   %% @doc Get the latest samples for a given interval from the archive
   latest(Period, Node, Bucket) when is_atom(Node) ->
  -    [{Node, [Result]}] = latest(Period, [Node], Bucket),
  +    [{Node, Result}] = latest(Period, [Node], Bucket),
       Result;
   latest(Period, Nodes, Bucket) when is_list(Nodes), is_list(Bucket) ->
       misc:pmap(fun (Node) ->
  
positive.code:                                fun () ->
                                         Tab = table_name(Node, Bucket, Period),
                                         Key = mnesia:last(Tab),
                                         mnesia:read(Tab, Key)
                                 end)}
                end, Nodes, length(Nodes)).
  
  
negative.code:     {TS, L}.
  
  
  %% @doc Start the timers to cascade samples to the next resolution.
  start_cascade_timers([{Prev, _, _} | [{Next, Step, _} | _] = Rest]) ->
      timer:send_interval(200 * Step, {cascade, Prev, Next, Step}),
      start_cascade_timers(Rest);
  start_cascade_timers([_]) ->
      ok.
  
  
  %% @doc Start timers for various housekeeping tasks.
  start_timers() ->
      Archives = archives(),
      lists:foreach(
        fun ({Period, Step, Samples}) ->
                Interval = 100 * Step * Samples,  % Allow to go over by 10% of the
                                                  % total samples
                timer:send_interval(Interval, {truncate, Period, Samples})
        end, Archives),
      start_cascade_timers(Archives).
  
  
  %% @doc Generate a suitable name for the Mnesia table.
  table_name(Node, Bucket, Period) ->
  