Index: functions.c
===================================================================
RCS file: /cvs/gnome/gcalctool/gcalctool/functions.c,v
retrieving revision 1.68
diff -u -r1.68 functions.c
--- functions.c	26 May 2005 21:34:06 -0000	1.68
+++ functions.c	30 Jun 2005 14:20:25 -0000
@@ -894,7 +894,18 @@
         mpstr(s, MP1);
         mpmul(MP1, MP1, t);
     } else if (key_equal(v->current, KEY_CHS)) {          /* +/- */
-        mpneg(s, t);
+         if (v->key_exp) {
+             if (*v->exp_posn == '+') {
+                 *v->exp_posn = '-';
+             } else {
+                 *v->exp_posn = '+';
+             }
+             set_display(v->display, FALSE);
+             MPstr_to_num(v->display, v->base, s);
+             v->key_exp = 0;
+         } else {
+             mpneg(s, t);
+        }
     }
 }
 
