anchor.diff:          true -> divisibility_check([H2 | T]);
           false -> false
       end.
  +
  +path_from_key(Key) ->
  +    SlashedKey = binary:replace(Key, <<".">>, <<"/">>, [global]),
  +    PrivDir = code:priv_dir(yasa),
  +    [PrivDir, "/storage/", binary_to_list(SlashedKey), ".yasa"].
  +
  
positive.code:     {Mega, Sec, _} = os:timestamp(),
      ?SECONDS_FROM_GREGORIAN_BASE_TO_EPOCH + Mega * 1000000 + Sec.
  
  %%%
  %% @private step sizes must be divisible
  
  divisibility_check([{_, _}]) -> true;
  divisibility_check([]) -> true;
  divisibility_check([{Step1, _}, {Step2, _} = H2 | T]) ->
  
negative.code: table(N, Q) ->
      X = lists:nth(N, Q#rrd.archives),
      X#archive.points.
  
  load(Key) when is_list(Key) ->
      load(list_to_binary(Key));
  load(Key) ->
      Path = path_from_key(Key),
      case file:read_file(Path) of
          {ok, Binary} ->  {ok, binary_to_term(Binary)};
          {error, _} ->  {error, not_found}
      end.
  
  save(Key, {Type, RRD}) ->
      Path = path_from_key(Key),
      filelib:ensure_dir(Path),
      file:write_file(Path, term_to_binary({Type, RRD})).
  
  %% @doc
  %% Neighbour values are the points we need to aggregate
  