diff --git a/src/operators.c b/src/operators.c
index ee2465a27ba450dca1e8326dc4dbb1d781f29e42..41786f81786b1696310cc8903b7f53135426f3c6 100644
--- a/src/operators.c
+++ b/src/operators.c
@@ -6,7 +6,7 @@
 /**/
 #include "global.h"
 #include <math.h>
-RCSID("$Id: operators.c,v 1.78 1999/12/15 01:40:34 grubba Exp $");
+RCSID("$Id: operators.c,v 1.79 1999/12/15 07:50:00 hubbe Exp $");
 #include "interpret.h"
 #include "svalue.h"
 #include "multiset.h"
@@ -597,6 +597,25 @@ static int float_promote(void)
     sp[-1].type=T_FLOAT;
     return 1;
   }
+
+#ifdef AUTO_BIGNUM
+  if(is_bignum_object_in_svalue(sp-2) && sp[-1].type==T_FLOAT)
+  {
+    stack_swap();
+    push_constant_text(tFloat);
+    stack_swap();
+    f_cast();
+    stack_swap();
+    return 1;
+  }
+  else if(is_bignum_object_in_svalue(sp-1) && sp[-2].type==T_FLOAT)
+  {
+    push_constant_text(tFloat);
+    stack_swap();
+    f_cast();
+    return 1;
+  }
+#endif
   return 0;
 }