anchor.diff:              FuzzingLoopFun(_, _, _, {0, _}, _N, _) -> [];
               FuzzingLoopFun(_, _, _, {I, _}, N, Acc) when is_integer(N) andalso N < I ->
                   RecordMeta({close, ok}), lists:reverse(Acc);
  -            FuzzingLoopFun(_, _, _, {_, FailedI}, N, Acc)
  +            FuzzingLoopFun(_, _, _, {_, FailedI}, _N, Acc)
                                                       when FailedI > MaxFails ->
                   io:format(standard_error, "Too many failed output attempts (~p), stopping.~n", [FailedI]),
                   erlamsa_logger:log(error, "Too many failed output attempts (~p), stopping.~n", [FailedI]),
  
positive.code:                 FuzzingLoopFun(NewMuta, DataGen, NewOut, {I + 1, NewFails}, N, record_result(Data, Acc))
          end,
      %% Running in single- or multi- threaded mode
      {ThreadMode, Threads} = get_threading_mode(maps:get(output, Dict, "-"), Cnt, maps:get(workers, Dict, 1)),
      run_fuzzing_loop(ThreadMode, FuzzingLoop, Muta, Generator, Out, Cnt, Threads).
  
  -spec run_fuzzing_loop(atom(), fun(), fun(), {atom(), fun()}, fun(), non_neg_integer(), non_neg_integer()) -> ok.
  run_fuzzing_loop(single, FuzzingLoop, Muta, {_GenName, Gen}, Out, Cnt, _Threads) ->
      FuzzingLoop(Muta, Gen, Out, {1, 0}, Cnt, []);
  run_fuzzing_loop(multi, FuzzingLoop, Muta, {GenName, Gen}, Out, _Cnt, Threads) ->
      %% Selecting generator
      %% For stdio we need to pre-read the data;
      %% otherwise it could be some random that we should variate
  
negative.code:             MergeRem([], [], Acc) -> Acc
          end)(Tasks, lists:seq(0, Rem), []),
      [{{0, FirstB, FirstW}, FirstRem}|FT] = lists:reverse([{{LastA, min(LastB, N), WNum}, LastRem}|T]),
      [{{1, FirstB, FirstW}, FirstRem}|FT].
  
  -spec wait_for_finished(integer()) -> ok.
  wait_for_finished(0) -> ok;
  