diff --git a/compiler/srctran.lisp b/compiler/srctran.lisp
index e103869f8fa91706d11b22060893b324edbfb5ea..647a9d1a1f5e52669b2605903e2f6cc8821208e7 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.129 2003/09/01 20:47:37 gerd Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.130 2003/09/02 13:51:13 gerd Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1094,10 +1094,12 @@
 	 (member (first members))
 	 (member-type (type-of member)))
     (assert (not (rest members)))
-    (specifier-type `(,(if (subtypep member-type 'integer)
-			   'integer
-			   member-type)
-		      ,member ,member))))
+    (cond ((subtypep member-type 'integer)
+	   (specifier-type `(integer ,member ,member)))
+	  ((subtypep member-type 'complex)
+	   (specifier-type member-type))
+	  (t
+	   (specifier-type `(,member-type ,member ,member))))))
 
 ;;; ONE-ARG-DERIVE-TYPE
 ;;;