diff --git a/src/operators.c b/src/operators.c index 65fe8efb768149e92c52dab1374ad9f656a0a71c..a634e4d7edd62d582781a65ac448ec2ec1f19c30 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); }