diff --git a/src/compiler/disassem.lisp b/src/compiler/disassem.lisp
index 1316aa2a6a73c4d41ceeb4c4614cf16e2916be20..762b77b22d072b53a849b884c8ec0a96d2b8df0d 100644
--- a/src/compiler/disassem.lisp
+++ b/src/compiler/disassem.lisp
@@ -952,13 +952,14 @@
 	((eq (car source) :plus-integer)
 	 ;; prints the given field proceed with a + or a -
 	 (let ((form
-		(arg-value-form (arg-or-lose (cadr source) funstate)
-				funstate
-				:numeric)))
+		 (arg-value-form (arg-or-lose (cadr source) funstate)
+				 funstate
+				 :numeric)))
 	   `(progn
-	      (when (>= ,form 0)
-		(local-write-char #\+))
-	      (local-princ ,form))))
+	      (if (>= ,form 0)
+		  (local-write-char #\+)
+		  (local-write-char #\-))
+	      (local-princ (abs ,form)))))
 	((eq (car source) 'quote)
 	 `(local-princ ,source))
 	((eq (car source) 'function)