diff --git a/asdf.lisp b/asdf.lisp
index 2df3a9bf508bf64c59357479bb8af2ecbcd6222d..a43c24abd0e5e84c4766a1c118ccf80ebd474bc7 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -208,7 +208,7 @@
   ;; This parameter isn't actually user-visible
   ;; -- please use the exported function ASDF:ASDF-VERSION below.
   ;; the 1+ hair is to ensure that we don't do an inadvertent find and replace
-  (subseq "VERSION:1.620" (1+ (length "VERSION"))))
+  (subseq "VERSION:1.622" (1+ (length "VERSION"))))
 
 (defun asdf-version ()
   "Exported interface to the version of ASDF currently installed. A string.
@@ -1028,10 +1028,15 @@ to `~a` which is not a directory.~@:>"
        filename))))
 
 (defmethod component-relative-pathname ((component source-file))
-  (merge-component-relative-pathname
-   (slot-value component 'relative-pathname)
-   (component-name component)
-   (source-file-type component (component-system component))))
+  ;; This binding of *default-pathname-defaults* is required notably because
+  ;; it will provide the default host to the above make-pathname, which may
+  ;; crucially matter to e.g. people somehow using logical-pathnames.
+  (let ((*default-pathname-defaults*
+         (component-pathname (component-parent component))))
+    (merge-component-relative-pathname
+     (slot-value component 'relative-pathname)
+     (component-name component)
+     (source-file-type component (component-system component)))))
 
 ;;;; -------------------------------------------------------------------------
 ;;;; Operations