anchor.diff:  -export([cancel_timer/1, reply/2, demonitor/1, msg/2]).
   -export([add_id/2, add_id/3]).
   -export([base64_decode/1, base64url_encode/1,  base64url_encode_mime/1, base64url_decode/1]).
  --export([map_merge/2, prefix/2, rand/2, consistent_reorder/2, floor/1, ceiling/1]).
  +-export([map_merge/2, prefix/2, rand/2, consistent_reorder/2, floor/1, ceiling/1, lpad/3]).
   -export([do_try/1, do_config_get/1, do_config_get/2, do_config_put/2, do_config_del/1]).
   
   -export_type([optslist/0, timestamp/0, m_timestamp/0, l_timestamp/0]).
  
positive.code: 
  
  
  %% @doc Safe call (no exceptions)
  call2(Dest, Msg) ->
      call2(Dest, Msg, 5000).
  
  
  %% @doc Safe call (no exceptions)
  call2(Dest, Msg, Timeout) ->
      case call(Dest, Msg, Timeout) of
          {error, {exit, {{timeout, _Fun}, _Stack}}} ->
              {error, timeout};
          {error, {exit, {{noproc, _Fun}, _Stack}}} ->
              {error, process_not_found};
          {error, {exit, {{normal, _Fun}, _Stack}}} ->
              {error, process_not_found};
          Other ->
              Other
      end.
  
negative.code:     lists:sublist(List2++List2, Start+1, Len).
  
  
  %% Pads on the left
  %% Example: lpad(123, 5, $0)
  %% It will fail if Size < size(Term)
  %% Similar to io_lib:format("~4..0B", [...]) but failing instead of using '*'
  -spec lpad(term(), pos_integer, char()) ->
      binary().
  
  lpad(Term, Size, Pad) ->
      Bin = to_binary(Term),
      BinSize = byte_size(Bin),
      true = Size >= BinSize,
      <<(binary:copy(<<Pad>>, Size-BinSize))/binary, Bin/binary>>.
  
  
  %% @doc Goes to the previous integer (-1.1 -> -2)
  floor(X) ->
      T = erlang:trunc(X),
  