Single-shot tasks use roundUp() to ensure “not early” execution; the same goes for the initial delay of recurring tasks. Using that for the recurring invocations means that the minimum delay you can get between executions is 2*tickDuration, unless we were to check the clock() where we are in the tick when calling `schedule()`. Having the maxFrequency be 0.5 / TickDuration would be unintuitive and looking at the clock() costs time (quite a lot on Java 6; but that’s what the old scheduler does).

So, which poison?