"Return a sequence formed by destructively removing the elements satisfying
   the specified PREDICATE from the given SEQUENCE."
   (declare (fixnum start))
-  (let ((end (or end length)))
+  (let ((end (or end length))
+       (predicate (%coerce-callable-to-fun predicate)))
     (declare (type index end))
     (seq-dispatch sequence
                  (if from-end
   "Return a sequence formed by destructively removing the elements not
   satisfying the specified PREDICATE from the given SEQUENCE."
   (declare (fixnum start))
-  (let ((end (or end length)))
+  (let ((end (or end length))
+       (predicate (%coerce-callable-to-fun predicate)))
     (declare (type index end))
     (seq-dispatch sequence
                  (if from-end
   "Return a copy of sequence with elements such that predicate(element)
    is non-null removed"
   (declare (fixnum start))
-  (let ((end (or end length)))
+  (let ((end (or end length))
+       (predicate (%coerce-callable-to-fun predicate)))
     (declare (type index end))
     (seq-dispatch sequence
                  (if from-end
   "Return a copy of sequence with elements such that predicate(element)
    is null removed"
   (declare (fixnum start))
-  (let ((end (or end length)))
+  (let ((end (or end length))
+       (predicate (%coerce-callable-to-fun predicate)))
     (declare (type index end))
     (seq-dispatch sequence
                  (if from-end
   manual for details."
   (declare (fixnum start))
   (let ((end (or end length))
-        (test pred)
+        (test (%coerce-callable-to-fun pred))
        test-not
        old)
     (declare (type index length end))
   See manual for details."
   (declare (fixnum start))
   (let ((end (or end length))
-        (test pred)
+        (test (%coerce-callable-to-fun pred))
        test-not
        old)
     (declare (type index length end))
    except that all elements satisfying the PRED are replaced with NEW. 
    SEQUENCE may be destructively modified. See manual for details."
   (declare (fixnum start))
-  (let ((end (or end length)))
+  (let ((end (or end length))
+       (pred (%coerce-callable-to-fun pred)))
     (declare (fixnum end))
     (if (listp sequence)
        (if from-end
    except that all elements not satisfying the TEST are replaced with NEW.
    SEQUENCE may be destructively modified. See manual for details."
   (declare (fixnum start))
-  (let ((end (or end length)))
+  (let ((end (or end length))
+       (pred (%coerce-callable-to-fun pred)))
     (declare (fixnum end))
     (if (listp sequence)
        (if from-end
   #!+sb-doc
   "Return the number of elements in SEQUENCE satisfying PRED(el)."
   (declare (fixnum start))
-  (let ((end (or end length)))
+  (let ((end (or end length))
+       (pred (%coerce-callable-to-fun pred)))
     (declare (type index end))
     (seq-dispatch sequence
                  (if from-end
   #!+sb-doc
   "Return the number of elements in SEQUENCE not satisfying TEST(el)."
   (declare (fixnum start))
-  (let ((end (or end length)))
+  (let ((end (or end length))
+       (pred (%coerce-callable-to-fun pred)))
     (declare (type index end))
     (seq-dispatch sequence
                  (if from-end