def Nar.read.step
import bend-kit-int@0.2.0.0/int.bend as Intimport Base
537# acc * r + d stays at most m exactly when acc <= (m - d) / r.
538def Nar.read.step(+r: U32, +m: U32, st: Maybe<&2, U32>, x: U32) ->
539 Maybe<&2, U32>:
540 match st:
541 case None{}:
542 None{}
543 case Some{acc}:
544 +a = {acc : U32}
545 +d = {Radix.value(x) : U32}
546 Nar.read.dig(Bool.and(U32.is_lt(d, r),
547 U32.is_le(a, U32.div(U32.sub(m, d), r))), r, a, d)