       fn
         _entry, acc(head, amount, tail) when amount > 0 ->
           skip(acc(head, amount - 1, tail))
+
         entry, acc(head, amount, tail) ->
           next_with_acc(unquote(fun), entry, head, amount, tail)
       end

        case curr do
          0 ->
            {:halt, original}
          1 ->
            {_, acc} = next_with_acc(unquote(fun), entry, head, 0, tail)
            {:halt, acc}
          _ ->
            next_with_acc(unquote(fun), entry, head, curr - 1, tail)
        end

      fn
        entry, acc(head, :first, tail) ->
          next_with_acc(unquote(fun), entry, head, {:ok, entry}, tail)

        entry, acc(head, {:ok, acc}, tail) ->
          value = unquote(callback).(entry, acc)
          next_with_acc(unquote(fun), value, head, {:ok, value}, tail)
