diff --git a/code/filesys.lisp b/code/filesys.lisp
index a78311e91d76e50e83f9dcd96d2dbc91a611c54e..d2a2a26c60514256d98ca9ada65b07263b8da4ec 100644
--- a/code/filesys.lisp
+++ b/code/filesys.lisp
@@ -6,7 +6,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/filesys.lisp,v 1.83 2004/09/27 19:06:35 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/filesys.lisp,v 1.84 2004/10/18 16:57:33 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -181,12 +181,14 @@
 	 ;; namestring, where * can be #\* or some digits.  This
 	 ;; denotes a version.
 	 (cond ((or (< (- end start) 4)
-		    (char/= (schar namestr (1- end)) #\~))
+		    (and (char/= (schar namestr (1- end)) #\~)
+			 (char/= (schar namestr (1- end)) #\*)))
 		;; No explicit version given, so return NIL to
 		;; indicate we don't want file versions, unless
 		;; requested in other ways.
 		(values nil end))
-	       ((and (char= (schar namestr (- end 2)) #\*)
+	       ((and (not *ignore-wildcards*)
+		     (char= (schar namestr (- end 2)) #\*)
 		     (char= (schar namestr (- end 3)) #\~)
 		     (char= (schar namestr (- end 4)) #\.))
 		;; Found "~*~", so it's a wild version
@@ -214,7 +216,8 @@
 	     (explicit-version namestr start end)
 	   (cond ((not (eq version :newest))
 		  (values version where))
-		 ((and (>= (- end 2) start)
+		 ((and (not *ignore-wildcards*)
+		       (>= (- end 2) start)
 		       (char= (schar namestr (- end 1)) #\*)
 		       (char= (schar namestr (- end 2)) #\.)
 		       (find #\. namestr
@@ -673,7 +676,8 @@
 	  ((or (pattern-p name)
 	       (pattern-p type)
 	       (eq name :wild)
-	       (eq type :wild))
+	       (eq type :wild)
+	       (eq version :wild))
 	   (let ((dir (unix:open-dir directory)))
 	     (when dir
 	       (unwind-protect