diff --git a/asdf-dependency-grovel.asd b/asdf-dependency-grovel.asd
index 78f18fa133b5748285a68d8449c08e4778433477..bc03b9d63ef3850b96be98a5a16b73b4dbe6a236 100644
--- a/asdf-dependency-grovel.asd
+++ b/asdf-dependency-grovel.asd
@@ -1,6 +1,10 @@
 ;;; -*- Mode: Lisp -*-
 
-(cl:in-package #:asdf)
+(cl:in-package :asdf)
+
+(unless (or #+asdf2 (asdf:version-satisfies (asdf:asdf-version) "2.014.8"))
+  (error "Not only is your ASDF version is too old for ASDF-DEPENDENCY-GROVEL,
+	you must upgrade it *before* you try to load any system."))
 
 (defclass grovel-handlers (module)
      ((%components :accessor %handler-components)))
@@ -26,7 +30,7 @@
             (handler-input-file-list (component-pathname c) c))))
 
 (defsystem :asdf-dependency-grovel
-  ;; :depends-on (:asdf) ; not safe. ASDF must be explicitly upgraded in advance.
+  :depends-on ((:version :asdf "2.017"))
   :components ((:file "package")
                (:file "variables" :depends-on ("package"))
                (:file "classes" :depends-on ("package" "variables"))
diff --git a/grovel.lisp b/grovel.lisp
index 3924461911412dde5dfc56b304f31172b308bf86..c1162e5dce15ddc68398a2c0324da1ad9a652c47 100644
--- a/grovel.lisp
+++ b/grovel.lisp
@@ -500,10 +500,10 @@
 (defun strip/ (name)
   (subseq name (1+ (or (position #\/ name :from-end t) -1))))
 (defun strip-extension (name extension)
-  (let* ((lext (length extension))
-         (lnam (length name))
-         (pos (- lnam lext)))
-    (if (and (plusp lext)
+  (let* ((lext (and (stringp extension) (length extension)))
+         (pext (and lext (plusp lext)))
+         (pos (and pext (- (length name) lext))))
+    (if (and pos
              (< 1 pos)
              (string= name extension :start1 pos)
              (eql #\. (char name (1- pos))))