diff --git a/asdf.asd b/asdf.asd
index 73088a4f613dbf1fbd2cd307bad31f385305b5b3..4d57a78cf1f32a9c94432706af1747bcf95c7140 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -14,7 +14,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.018.20" ;; to be automatically updated by bin/bump-revision
+  :version "2.018.21" ;; to be automatically updated by bin/bump-revision
   :depends-on ()
   :components
   ((:file "asdf")
diff --git a/asdf.lisp b/asdf.lisp
index 7f2c9bfdc14552099c668159f571fb5a8bff4f3d..595a2f6b58345fe6dae0b786fb868f4b36265a52 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -1,5 +1,5 @@
 ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
-;;; This is ASDF 2.018.20: Another System Definition Facility.
+;;; This is ASDF 2.018.21: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
@@ -107,7 +107,7 @@
          ;; "2.345.6" would be a development version in the official upstream
          ;; "2.345.0.7" would be your seventh local modification of official release 2.345
          ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6
-         (asdf-version "2.018.20")
+         (asdf-version "2.018.21")
          (existing-asdf (find-class 'component nil))
          (existing-version *asdf-version*)
          (already-there (equal asdf-version existing-version)))
@@ -2831,7 +2831,8 @@ Returns the new tree (which probably shares structure with the old one)"
       ret)))
 
 (defun* reset-system (system &rest keys &key &allow-other-keys)
-  (apply 'change-class (change-class system 'proto-system) 'system keys))
+  (change-class (change-class system 'proto-system) 'system)
+  (apply 'reinitialize-instance system keys))
 
 (defun* do-defsystem (name &rest options
                            &key pathname (class 'system)