diff --git a/compiler/old-rt/vm.lisp b/compiler/old-rt/vm.lisp
index 6b5ce5d033f2952f17aa07253916080907f3f06f..3103d2e6e0b5dd949f134417f92eb354b85c09fa 100644
--- a/compiler/old-rt/vm.lisp
+++ b/compiler/old-rt/vm.lisp
@@ -192,13 +192,12 @@
 	 (let ((types (union-type-types type)))
 	   (multiple-value-bind (res exact)
 				(primitive-type (first types))
-	     (dolist (type (rest types))
+	     (dolist (type (rest types) (values res exact))
 	       (multiple-value-bind (ptype ptype-exact)
 				    (primitive-type type)
 		 (unless ptype-exact (setq exact nil))
 		 (unless (eq ptype res)
-		   (return (values *any-primitive-type* nil)))))
-	     (values res exact)))))
+		   (return (values *any-primitive-type* nil)))))))))
     (member-type
      (let* ((members (member-type-members type))
 	    (res (primitive-type-of (first members))))