--- src/bruch.c	2007-12-06 11:30:00.000000000 -0500
+++ b/bruch.c	2013-10-22 08:37:43.000000000 -0400
@@ -975,14 +975,16 @@
     ggterg = ggt_i(S_B_UI(bruch),S_B_OI(bruch));
 
     if (ggterg == S_B_UI(bruch)) {
+        INT tmp = S_B_OI(bruch);
         freeself_bruch(bruch);
-        M_I_I(S_B_OI(bruch) / ggterg,bruch);
+        M_I_I(tmp / ggterg,bruch);
         goto ende;
         }
 
     if (-ggterg == S_B_UI(bruch)) {
+        INT tmp = S_B_OI(bruch);
         freeself_bruch(bruch);
-        M_I_I(- S_B_OI(bruch) / ggterg,bruch);
+        M_I_I(- tmp / ggterg,bruch);
         goto ende;
         }
 
@@ -1032,12 +1034,14 @@
 
     if (S_O_K(S_B_U(bruch)) == INTEGER)
         if (S_B_UI(bruch) == 1) { 
+            INT tmp = S_B_OI(bruch);
             freeself_bruch(bruch);
-            M_I_I(S_B_OI(bruch),bruch); 
+            M_I_I(tmp,bruch); 
             goto ende; }
         else if (S_B_UI(bruch) == -1) { 
+            INT tmp = S_B_OI(bruch);
             freeself_bruch(bruch);
-            M_I_I( - S_B_OI(bruch),bruch); 
+            M_I_I( - tmp,bruch); 
             goto ende; }
     if (NEGP(S_B_O(bruch)) && NEGP(S_B_U(bruch)))
         {