anchor.diff:                              false ->
                                   case Iterator of
                                       undefined -> k_times(Body, WorkerProvider, Env, State2, Batch);
  -                                    _ -> k_times_iter(Body, WorkerProvider, Iterator, Env, Step, State2, Done + erlang:trunc(Shift), Batch)
  +                                    _ -> k_times_iter(Body, WorkerProvider, Iterator, Env, Step, State2, Done + erlang:trunc(Shift), OldIter + erlang:trunc(Shift), Batch)
                                   end;
                               true ->
  -                                k_times_spawn(Body, WorkerProvider, Iterator, Env, Step, State2, Done + erlang:trunc(Shift), Batch)
  +                                k_times_spawn(Body, WorkerProvider, Iterator, Env, Step, State2, Done + erlang:trunc(Shift), OldIter + erlang:trunc(Shift), Batch)
                           end,
                       BatchEnd = msnow(),
                       NewBatch = case IsFirst of
  
positive.code:     end.
  
  looprun(TimeFun, Rate, Body, WorkerProvider, State, Env, Opts = #opts{parallel = 1})  ->
      timerun(msnow(), random:uniform(), TimeFun, Rate, Body, WorkerProvider, Env, true, Opts, 1, State, 0, {0, 0});
  looprun(TimeFun, Rate, Body, WorkerProvider, State, Env, Opts = #opts{parallel = N}) ->
      StartTime = msnow(),
      _ = mzb_lists:pmap(fun (I) ->
          _ = random:seed(now()),
          timerun(StartTime, I + random:uniform(), TimeFun, Rate, Body, WorkerProvider, Env, true, Opts, 1, State, 0, {0, I})
      end, lists:seq(0, N - 1)),
      {nil, State}.
  
  timerun(Start, Shift, TimeFun, Rate, Body, WorkerProvider, Env, IsFirst, Opts, Batch, State, OldDone, OldRun) ->
      LocalTime = msnow() - Start,
      {Time, State1} = TimeFun(State),
      {NewRate, Done, State2, NewRun} = eval_rates(Rate, OldDone, LocalTime, Time, State1, Opts#opts.parallel, OldRun),
  
negative.code:     case Sleep > ?MAXSLEEP of
          true ->
              timer:sleep(?MAXSLEEP),
              timerun(Start, Shift, TimeFun, NewRate, Body, WorkerProvider, Env, IsFirst, Opts, Batch, State2, Done, OldIter + Opts#opts.parallel, NewRun);
          false ->
              Sleep > 0 andalso timer:sleep(Sleep),
              case Time =< LocalTime + Sleep of
  