diff --git a/uiop/filesystem.lisp b/uiop/filesystem.lisp
index cf07757b4c29c8b7ed045487718ffc63791deaae..76be1bb0f870948df1b58cc589b67b742c79aec3 100644
--- a/uiop/filesystem.lisp
+++ b/uiop/filesystem.lisp
@@ -144,7 +144,11 @@ or the original (parsed) pathname if it is false (the default)."
     "Is X the name of a directory that exists on the filesystem?"
     #+allegro
     (excl:probe-directory x)
-    #-allegro
+    #+clisp
+    (handler-case (ext:probe-directory x)
+           (sys::simple-file-error ()
+             nil))
+    #-(or allegro clisp)
     (let ((p (probe-file* x :truename t)))
       (and (directory-pathname-p p) p)))
 
@@ -211,7 +215,7 @@ permits this."
                               #+clisp
                               (when (equal :wild (pathname-type pattern))
                                 (ignore-errors (directory* (make-pathname :type nil :defaults pat)))))))
-        (remove-if 'directory-exists-p
+        (remove-if 'directory-pathname-p
                    (filter-logical-directory-results
                     directory entries
                     #'(lambda (f)