diff --git a/Makefile b/Makefile
index 58d4f52da27c9e76dbcf54ef7c83a30eb4f1211f..59ca17c20e7f94ff11ed9773ae9d02b991337aaa 100644
--- a/Makefile
+++ b/Makefile
@@ -122,7 +122,7 @@ t: test-lisp
 
 test: test-lisp test-clean-load test-load-systems doc
 
-test-load-systems:
+test-load-systems: build/asdf.lisp
 	./test/run-tests.sh -l ${l} ${s}
 
 test-all-lisps:
@@ -147,7 +147,7 @@ test-all: doc test-all-lisps
 test-all-no-stop:
 	-make doc ; for l in ${lisps} ; do make t l=$$l ; make u l=$$l ; done ; true
 
-extract-all-tagged-asdf:
+extract-all-tagged-asdf: build/asdf.lisp
 	./test/run-tests.sh -H
 
 # Note that the debian git at git://git.debian.org/git/pkg-common-lisp/cl-asdf.git is stale,
diff --git a/asdf.asd b/asdf.asd
index 619d5ea2bffd8b2f1c497e70dad9249826f751bb..1f32c845577b13a6c872079c8f375004c2077448 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -74,7 +74,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.32.18" ;; to be automatically updated by make bump-version
+  :version "2.32.20" ;; to be automatically updated by make bump-version
   :depends-on ()
   #+asdf3 :encoding #+asdf3 :utf-8
   ;; For most purposes, asdf itself specially counts as a builtin system.
diff --git a/bundle.lisp b/bundle.lisp
index 2da6f0e2335ba3ea2a9ef1739142b7d42ef92b67..9a1c6e386db1949e28ab79727b3b1a74c174d2bd 100644
--- a/bundle.lisp
+++ b/bundle.lisp
@@ -70,15 +70,12 @@
     ;; On "normal" Lisps: produce an image file from system and dependencies.
     ((selfward-operation :initform '(monolithic-fasl-op monolithic-lib-op))))
 
-  (defclass monolithic-fasl-op (monolithic-bundle-op basic-fasl-op selfward-operation)
-    ;; Create a single fasl for the system and its dependencies.
-    ((selfward-operation :initform 'load-fasl-op)))
+  ;; Create a single fasl for the system and its dependencies.
+  (defclass monolithic-fasl-op (monolithic-bundle-op basic-fasl-op) ())
 
-  (defclass monolithic-lib-op (monolithic-bundle-op basic-compile-op sideway-operation selfward-operation)
+  (defclass monolithic-lib-op (monolithic-bundle-op basic-compile-op)
     ;; ECL: Create a single linkable library for the system and its dependencies.
-    ((bundle-type :initform :lib)
-     (selfward-operation :initform 'lib-op)
-     (sideway-operation :initform 'lib-op)))
+    ((bundle-type :initform :lib)))
 
   (defclass monolithic-dll-op (monolithic-bundle-op basic-compile-op sideway-operation selfward-operation)
     ((bundle-type :initform :dll)
@@ -215,9 +212,10 @@
 
   (defmethod component-depends-on ((o monolithic-fasl-op) (c system))
     (declare (ignorable o))
-    `((fasl-op ,@(required-components c :other-systems t :component-type 'system
-                                        :goal-operation (find-operation o 'load-fasl-op)
-                                        :keep-operation 'fasl-op))
+    `((#-(or ecl mkcl) fasl-op #+(or ecl mkcl) lib-op
+         ,@(required-components c :other-systems t :component-type 'system
+                                  :goal-operation (find-operation o 'load-fasl-op)
+                                  :keep-operation 'fasl-op))
       ,@(call-next-method)))
 
   (defmethod component-depends-on ((o lib-op) (c system))
@@ -460,7 +458,7 @@
   (defmethod perform ((o basic-fasl-op) (s system))
     (apply #'compiler::build-bundle (output-file o c) ;; second???
            :lisp-object-files (input-files o s) (bundle-op-build-args o)))
-}
+
   (defun bundle-system (system &rest args &key force (verbose t) version &allow-other-keys)
     (declare (ignore force verbose version))
     (apply #'operate 'binary-op system args)))
diff --git a/header.lisp b/header.lisp
index 58c6c14dca064a33e0addc4a236bf1b5b063692e..67f7945404f3905ffff84cb65fddc65cfb548b21 100644
--- a/header.lisp
+++ b/header.lisp
@@ -1,5 +1,5 @@
 ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
-;;; This is ASDF 2.32.18: Another System Definition Facility.
+;;; This is ASDF 2.32.20: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
diff --git a/test/run-tests.sh b/test/run-tests.sh
index feb7876d787cdccdc13fc212f4475ed78bac0a0e..5c2e7eef6684674400165edc36fb1eb519dc24d5 100755
--- a/test/run-tests.sh
+++ b/test/run-tests.sh
@@ -239,7 +239,8 @@ fi
 
 
 create_config () {
-    mkdir -p ../build/test-source-registry-conf.d ../build/test-asdf-output-translations-conf.d
+    cd ${ASDFDIR}
+    mkdir -p build/results/ build/test-source-registry-conf.d build/test-asdf-output-translations-conf.d
 }
 upgrade_tags () {
     if [ -n "$ASDF_UPGRADE_TEST_TAGS" ] ; then
@@ -269,6 +270,8 @@ upgrade_methods () {
 EOF
 }
 extract_tagged_asdf () {
+    cd ${ASDFDIR}
+    mkdir -p build/
     tag=$1
     if [ REQUIRE = "$tag" ] ; then return 0 ; fi
     file=build/asdf-${tag}.lisp ;
@@ -326,7 +329,7 @@ valid_upgrade_test_p () {
 }
 run_upgrade_tests () {
     cd ${ASDFDIR}
-    mkdir -p  build/results
+    mkdir -p build/results/
     rm -f build/*.*f* uiop/*.*f* test/*.*f* ## Remove stale FASLs from ASDF 1.x, especially when different implementations have same name
     ASDF_OUTPUT_TRANSLATIONS="(:output-translations (\"${ASDFDIR}\" (\"${ASDFDIR}/build/fasls/\" :implementation \"asdf/\")) (t (\"${ASDFDIR}/build/fasls/\" :implementation \"root/\")) :ignore-inherited-configuration)"
     export ASDF_OUTPUT_TRANSLATIONS
@@ -349,9 +352,8 @@ run_upgrade_tests () {
     fi ; done ; done 2>&1 | tee build/results/${lisp}-upgrade.text
 }
 run_tests () {
-  cd ${ASDFDIR}/test
   create_config
-  mkdir -p ../build/results
+  cd ./test/
   echo failure > ../build/results/status
     thedate=`date "+%Y-%m-%d"`
     do_tests "$@" 2>&1 | \
@@ -373,7 +375,8 @@ test_clean_load () {
     case $lisp in
         gcl|cmucl) return 0 ;; # These are hopeless
     esac
-    mkdir -p build/results
+    cd ${ASDFDIR}
+    mkdir -p build/results/
     nop=build/results/${lisp}-nop.text
     load=build/results/${lisp}-load.text
     ${cmd} ${eval} \
@@ -392,12 +395,16 @@ test_load_systems () {
     case $lisp in
         gcl) return 0 ;; # This one is hopeless
     esac
+    cd ${ASDFDIR}
+    mkdir -p build/results/
     echo "Loading all these systems: $*"
     ${cmd} ${eval} \
       "(or #.(load \"test/script-support.lisp\") #.(asdf-test::with-test () (asdf-test::test-load-systems $*)))" \
         2>&1 | tee build/results/${lisp}-systems.text
 }
 test_interactively () {
+    cd ${ASDFDIR}
+    mkdir -p build/results/
     rlwrap $cmd $eval "(or #.(load \"test/script-support.lisp\") #.(asdf-test::interactive-test '($*)))"
 }
 
diff --git a/uiop/lisp-build.lisp b/uiop/lisp-build.lisp
index 49b25d5ba49e083775aa26e1afd71eb1ed32a038..cfa72214af25f1b17c7345c141712e7e905cbebc 100644
--- a/uiop/lisp-build.lisp
+++ b/uiop/lisp-build.lisp
@@ -52,7 +52,7 @@ Note that ASDF ALWAYS raises an error if it fails to create an output file when
   (defun get-optimization-settings ()
     "Get current compiler optimization settings, ready to PROCLAIM again"
     #-(or clisp clozure cmu ecl sbcl scl)
-    (warn "~S does not support ~S. Please help me fix that." 'get-optimization-settings (lisp-implementation))
+    (warn "~S does not support ~S. Please help me fix that." 'get-optimization-settings (implementation-type))
     #+clozure (ccl:declaration-information 'optimize nil)
     #+(or clisp cmu ecl sbcl scl)
     (let ((settings '(speed space safety debug compilation-speed #+(or cmu scl) c::brevity)))
diff --git a/upgrade.lisp b/upgrade.lisp
index c6935da1acd7822fb55ee404a34485ce9bf64adf..cbca42d9d92d8b3c4a7f0c9cffb57bf597e8164b 100644
--- a/upgrade.lisp
+++ b/upgrade.lisp
@@ -52,7 +52,7 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
          ;; "3.4.5.67" would be a development version in the official upstream of 3.4.5.
          ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
          ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
-         (asdf-version "2.32.18")
+         (asdf-version "2.32.20")
          (existing-version (asdf-version)))
     (setf *asdf-version* asdf-version)
     (when (and existing-version (not (equal asdf-version existing-version)))
diff --git a/version.lisp-expr b/version.lisp-expr
index dac6684330e3d091f343f99bb03521cf35f5ec4d..1fb6bf0ca43c5d29101d4cf1d82ea5abcb974794 100644
--- a/version.lisp-expr
+++ b/version.lisp-expr
@@ -1 +1 @@
-"2.32.18"
+"2.32.20"