anchor.diff:      i_repeat(Fun, Args, Times - 1, Params, NewAcc).
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  -% parallel repeat helper functions
  +% parallel repeat helper functions 
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
   -spec parallel_run(pid(), fun(), args(), boolean(), Id::any()) -> ok.
  
positive.code: repeat(Fun, Args, Times, Params) ->
      NewParams = case proplists:is_defined(collect, Params) of
                      false -> Params;
                      _ -> [{accumulate, fun(I, R) -> [I | R] end, []} |
                                proplists:delete(accumulate, Params)]
                  end,
      Acc = lists:keyfind(accumulate, 1, NewParams),
      case proplists:is_defined(parallel, NewParams) of
          true ->
              repeat(fun spawn/3, [?MODULE, parallel_run, [self(), Fun, Args, Acc =/= false, ok]], Times),
              case Acc of
                  false -> ok;
  
negative.code: -spec log2(X::number()) -> float().
  log2(X) -> log(X, 2).
  
  %% @doc Returns the largest integer not larger than X. 
  -spec floor(X::number()) -> integer().
  floor(X) when X >= 0 ->
      erlang:trunc(X);
  