diff --git a/code/numbers.lisp b/code/numbers.lisp
index d03d17416d4617ab6730c299e56e103f5776392e..750274a354972f2cfa22bb3a8d90108ca641f1cf 100644
--- a/code/numbers.lisp
+++ b/code/numbers.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/numbers.lisp,v 1.55 2003/09/09 12:33:39 gerd Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/numbers.lisp,v 1.56 2004/01/09 04:18:06 toy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1351,7 +1351,13 @@ significant bit of INTEGER is bit 0."
   (declare (integer n m))
   (if (or (zerop n) (zerop m))
       0
-      (/ (abs (* n m)) (gcd n m))))
+      (let ((m (abs m))
+	    (n (abs n)))
+	(multiple-value-bind (max min)
+	    (if (> m n)
+		(values m n)
+		(values n m))
+	  (* (truncate max (gcd n m)) min)))))
 
 
 ;;; TWO-ARG-GCD  --  Internal