diff --git a/lib/pure/math.nim b/lib/pure/math.nim index 7a5603ece3..1139597753 100644 --- a/lib/pure/math.nim +++ b/lib/pure/math.nim @@ -105,7 +105,7 @@ when not defined(js) and not defined(nimscript): # C when compileOption("overflowChecks"): if y == 0: raise new(DivByZeroDefect) - elif (x == T.low and y == -1.T): + elif (x == T.low and int64(y) == -1): raise new(OverflowDefect) let res = divmod_c(x, y) result[0] = res.quot diff --git a/tests/stdlib/tmath.nim b/tests/stdlib/tmath.nim index 69534b16e2..5d3fd450ff 100644 --- a/tests/stdlib/tmath.nim +++ b/tests/stdlib/tmath.nim @@ -545,3 +545,8 @@ when not defined(js) and not defined(danger): doAssertRaises(OverflowDefect): discard sum(x) +block: # bug #24673 + let x: Natural = 5 + let y: Natural = 3 + + doAssert divmod(x, y) == (Natural 1, Natural 2)