def rate
import bend-kit-scheduler@0.4.1.0/recurrence.bend as Recurrenceimport Base
41# A tick equal to completion is overdue. The already-completed previous tick
42# is excluded. A positive period keeps all arithmetic exact, without overflow.
43def rate(+previous: Nat, +completion: Nat, +period: Nat, policy: Missed) -> Plan:
44 +overdue = Nat.div(Nat.sub(completion, previous), period)
45 Planned{ticks(limit(policy, overdue), previous, period),
46 Nat.add(previous, Nat.mul(1n+overdue, period))}