core: Throw exceptions rather than asserts.
[mes.git] / math.c
diff --git a/math.c b/math.c
index 8b7ebb35796784dc329937a6e9c80a2062a60e82..b2ca402edd13ec4c7574fa8411d9f2618513fea2 100644 (file)
--- a/math.c
+++ b/math.c
@@ -115,7 +115,9 @@ modulo (SCM a, SCM b)
 {
   assert (TYPE (a) == NUMBER);
   assert (TYPE (b) == NUMBER);
-  return MAKE_NUMBER (VALUE (a) % VALUE (b));
+  int x = VALUE (a);
+  while (x < 0) x += VALUE (b);
+  return MAKE_NUMBER (x % VALUE (b));
 }
 
 SCM