// BAD val r = a % b val correct = if (r < 0) r + b else r // GOOD val correct = a.mod(b) | Language | Operator/Function | Behavior | Sign of Result | | :--- | :--- | :--- | :--- | | Kotlin | % / .rem() | Truncated toward zero | Same as dividend | | Kotlin | .mod() | Floored (Euclidean) | Always non‑negative | | Python | % | Floored | Same as divisor | | Java | % | Truncated | Same as dividend | | Java | Math.floorMod() | Floored | Always non‑negative | | C / C++ | % | Truncated (impl‑defined pre‑C++11) | Same as dividend | | JavaScript | % | Truncated | Same as dividend |
(-5).mod(3) = 1 3. Implementation and Behavior Analysis The following Kotlin code demonstrates the functional difference: kotlin mod
(-5).rem(3) = -2 2.2 The Modulo Function ( .mod() ) Kotlin defines the Euclidean modulo $r$ such that: $$ a \equiv r \pmodb $$ and: $$ 0 \leq r < |b| $$ Sign rule: $r$ is always non-negative. // BAD val r = a % b
// Verification of remainder property: // a = (a/b)*b + r // -5 = (-5/3)*3 + (-2) -> -5 = (-1)*3 + (-2) = -5 ✓ kotlin mod
Manually fixing a negative remainder: