From 9024ae971142bebcb2b577b86c2f95e81ca0e023 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Thu, 11 Sep 1997 17:07:28 -0700
Subject: [PATCH] module on negative numbers fixed

Rev: src/operators.c:1.17
---
 src/operators.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/operators.c b/src/operators.c
index 65fe8efb76..a634e4d7ed 100644
--- a/src/operators.c
+++ b/src/operators.c
@@ -5,7 +5,7 @@
 \*/
 #include <math.h>
 #include "global.h"
-RCSID("$Id: operators.c,v 1.16 1997/08/30 18:35:48 grubba Exp $");
+RCSID("$Id: operators.c,v 1.17 1997/09/12 00:07:28 hubbe Exp $");
 #include "interpret.h"
 #include "svalue.h"
 #include "multiset.h"
@@ -1061,12 +1061,12 @@ void o_mod(void)
       {
 	sp[-1].u.integer %= sp[0].u.integer;
       }else{
-	sp[-1].u.integer=sp[0].u.integer+(sp[-1].u.integer % -sp[0].u.integer);
+	sp[-1].u.integer=((sp[-1].u.integer+~sp[0].u.integer)%-sp[0].u.integer)-~sp[0].u.integer;
       }
     }else{
       if(sp[0].u.integer>=0)
       {
-	sp[-1].u.integer=sp[0].u.integer-(-sp[-1].u.integer % sp[0].u.integer);
+	sp[-1].u.integer=sp[0].u.integer+~((~sp[-1].u.integer) % sp[0].u.integer);
       }else{
 	sp[-1].u.integer=-(-sp[-1].u.integer % -sp[0].u.integer);
       }
-- 
GitLab