anchor.diff:  
               % write data point based on initial data point
               {ok, _} = file:position(IO, {bof, Position}),
  -            file:write(IO, data_point(Archive, TimeStamp, Value))
  -
  -            % TODO: update lower archives
  +            Interval = interval_start(Archive, TimeStamp),
  +            file:write(IO, data_point(Interval, Value)),
  +
  +            propagate_lower_archives(IO, Header, Interval, Archive, LowerArchives)
       end.
   
   %%
  
positive.code: do_update(IO, Value, TimeStamp) ->
      {ok, Metadata} = read_metadata_inner(IO),
      write_point(IO, Metadata, Value, TimeStamp).
  
  
  write_point(IO, Header, Value, TimeStamp) ->
  
negative.code:     end.
  
  
  mod(A, B) when A < 0 -> erlang:abs(A) rem B;
  mod(A, B) -> A rem B.
  
  
  get_data_point_offset(Archive, _Interval, 0) ->
      Archive#archive_header.offset;
  get_data_point_offset(Archive, Interval, BaseInterval) ->
      Distance = Interval - BaseInterval,
      PointDistance = Distance div Archive#archive_header.seconds,
      ByteDistance = PointDistance * ?POINT_SIZE,
      Archive#archive_header.offset + (mod(ByteDistance, Archive#archive_header.size)).
  
  
  update_point(File, Value, TimeStamp) ->
  