diff --git a/uiop/utility.lisp b/uiop/utility.lisp
index d655a25de88e53e11a00255f4f92e58cba182091..9462880092a08cb3459c70658b85b50056e4a27d 100644
--- a/uiop/utility.lisp
+++ b/uiop/utility.lisp
@@ -206,7 +206,9 @@ Returns two values: \(A B C\) and \(1 2 3\)."
                        #-scl base-char
                        ;; LW6 has BASE-CHAR < SIMPLE-CHAR < CHARACTER
                        ;; LW7 has BASE-CHAR < BMP-CHAR < SIMPLE-CHAR = CHARACTER
-                       #+lispworks7 lw:bmp-char #+lispworks lw:simple-char
+                       #+(and lispworks (not (or lispworks4 lispworks5 lispworks6)))
+                       lw:bmp-char
+                       #+lispworks lw:simple-char
                        character)
                      :unless (and next (subtypep next type))
                      :collect type) 'vector))