From 39700dd3e405a40a23ddb4cad4f352c42843d62b Mon Sep 17 00:00:00 2001
From: dtc <dtc>
Date: Mon, 5 Jan 1998 23:05:04 +0000
Subject: [PATCH] Fix to interval-mul for the handling of closed -0.0, from
 Raymond Toy.

---
 compiler/srctran.lisp | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/compiler/srctran.lisp b/compiler/srctran.lisp
index 76c051818..f251b2d7d 100644
--- a/compiler/srctran.lisp
+++ b/compiler/srctran.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/compiler/srctran.lisp,v 1.71 1998/01/05 23:00:23 dtc Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.72 1998/01/05 23:05:04 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -597,9 +597,11 @@
 		  nil)
 		 ((or (and (numberp x) (zerop x))
 		      (and (numberp y) (zerop y)))
-		  ;; Multiply by closed zero is special.  The result is
-		  ;; always a closed bound
-		  0)
+		  ;; Multiply by closed zero is special.  The result
+		  ;; is always a closed bound.  But don't replace this
+		  ;; with zero; we want the multiplication to produce
+		  ;; the correct signed zero, if needed.
+		  (* (bound-value x) (bound-value y)))
 		 ((or (and (floatp x) (float-infinity-p x))
 		      (and (floatp y) (float-infinity-p y)))
 		  ;; Infinity times anything is infinity
-- 
GitLab