anchor.diff:      end.
   
   
  +make_archive_header(Offset, Seconds, Points) ->
  +    #archive_header{offset=Offset,
  +                   seconds=Seconds,
  +                   points=Points,
  +                   retention=Seconds * Points,
  +                   size=Points * ?POINT_SIZE}.
  +
  +
   read_archive_info(IO, Archives) ->
       ByOffset = fun(A, B) -> A#archive_header.offset =< B#archive_header.offset end,
       case read_archive_info(IO, [], Archives) of
  
positive.code:     end.
  
  
  write_point_from_base(IO, Archive, Interval, Value, 0) ->
      % this is the file's first update
      Offset = Archive#archive_header.offset,
      {ok, _Pos} = file:position(IO, {bof, Offset}),
      file:write(IO, data_point(Archive, Interval, Value));
  
  write_point_from_base(IO, Archive, Interval, Value, BaseInterval) ->
      % all subsequent updates
      Distance = Interval - BaseInterval,
      PointDistance = Distance div Archive#archive_header.seconds,
      ByteDistance = PointDistance * ?POINT_SIZE,
      Position = Archive#archive_header.offset + (ByteDistance rem Archive#archive_header.size),
      {ok, _Pos} = file:position(IO, {bof, Position}),
      file:write(IO, data_point(Archive, Interval, Value)).
  
  
  update_point(File, Value, TimeStamp) ->
  
negative.code: -module(statser_whisper).
  
  -include_lib("eunit/include/eunit.hrl").
  
  
  -export([read_metadata/1,
           aggregation_type/1,
  