diff --git a/compiler/old-rt/arith.lisp b/compiler/old-rt/arith.lisp
index d3b855d0a78c721c062db072961502c7265bace9..81970164248ba5544e1888eba02c55b6ffc6116d 100644
--- a/compiler/old-rt/arith.lisp
+++ b/compiler/old-rt/arith.lisp
@@ -126,9 +126,10 @@
 	       (inst sli16 r (- n 16))
 	       (inst sli r n)))
 	  ((minusp n)
-	   (if (> n 15)
-	       (inst sari16 r (- n 16))
-	       (inst sari r n))))
+	   (let ((n (- n)))
+	     (if (> n 15)
+		 (inst sari16 r (- n 16))
+		 (inst sari r n)))))
 
     (unless (location= i r)
       (inst lr r i))))