anchor.diff:                   {'error',atom()} |
                    {ok, binary()}.
   
  -get(#mstore{size=S, files=FS, dir=Dir, data_size=DataSize},
  +get(#mstore{size=S, files=FS, dir=Dir},
       Metric, Time, Count) when
         is_binary(Metric),
         is_integer(Time), Time >= 0,
         is_integer(Count), Count > 0 ->
       ?DT_READ_ENTRY(Metric, Time, Count),
       Parts = make_splits(Time, Count, S),
  -    R = do_get(S, FS, Dir, DataSize, Metric, Parts, <<>>),
  +    R = do_get(S, FS, Dir, Metric, Parts, <<>>),
       ?DT_READ_RETURN,
       R.
   
  
positive.code:                        _ ->
                             Acc1
                     end,
              do_get(S, FS, Dir, DataSize, Metric, R, Acc2);
          {error,not_found} ->
              Acc1 = <<Acc/binary, (mmath_bin:empty(Count))/binary>>,
              do_get(S, FS, Dir, DataSize, Metric, R, Acc1);
          eof ->
              Acc1 = <<Acc/binary, (mmath_bin:empty(Count))/binary>>,
              do_get(S, FS, Dir, DataSize, Metric, R, Acc1);
          E ->
              E
      end;
  
  do_get(S,
         [_, {FileBase, F}] = FS,
         Dir, DataSize, Metric, [{Time, Count} | R], Acc)
    when ((Time div S)*S) =:= FileBase ->
      case mfile:read(F, Metric, Time, Count) of
          {ok, D} ->
  
negative.code: put(MStore, Metric, Time, V) when is_integer(V) ->
      put(MStore, Metric, Time, mmath_bin:from_list([V]));
  
  put(MStore = #mstore{size=S, files=CurFiles, metrics=Ms},
      Metric, Time, Value)
    when is_binary(Value),
         is_integer(Time), Time >= 0,
  