diff --git a/code/filesys.lisp b/code/filesys.lisp
index a9e8bb700155dcf30b44f187138870e9c244d10e..fbe35c8b9c7cec90530a57c03e05d5d18cac17dc 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.71 2002/11/15 15:08:11 toy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/filesys.lisp,v 1.72 2003/02/14 19:47:12 toy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -456,11 +456,17 @@
 	     (defaults-directory (%pathname-directory defaults))
 	     (prefix-len (length defaults-directory))
 	     (result-dir
-	      (cond ((and (> prefix-len 1)
-			  (>= (length pathname-directory) prefix-len)
-			  (compare-component (subseq pathname-directory
-						     0 prefix-len)
-					     defaults-directory))
+	      (cond ((null pathname-directory)
+		     ;; No directory, so relative to default.
+		     (list :relative))
+		    ((eq (first pathname-directory) :relative)
+		     ;; Relative directory so relative to default.
+		     pathname-directory)
+		    ((and (> prefix-len 1)
+			      (>= (length pathname-directory) prefix-len)
+			      (compare-component (subseq pathname-directory
+							 0 prefix-len)
+						 defaults-directory))
 		     ;; Pathname starts with a prefix of default.  So just
 		     ;; use a relative directory from then on out.
 		     (cons :relative (nthcdr prefix-len pathname-directory)))