diff --git a/asdf.lisp b/asdf.lisp
index b4d0635c6f6be4afc506a856658e14fc4d3a145a..ee19a7705398ce563810e5d76754550eacbd32f7 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -693,6 +693,9 @@ actually-existing directory."
                             :defaults p)
              sofar)))))))
 
+(defun lispize-pathname (input-file)
+  (make-pathname :type "lisp" :defaults input-file))
+
 ;;;; -------------------------------------------------------------------------
 ;;;; Classes, Conditions
 
@@ -1484,7 +1487,7 @@ recursive calls to traverse.")
   ;; Note how we use OUTPUT-FILES to find the binary locations
   ;; This allows the user to override the names.
   (let* ((input (output-files o c))
-         (output (compile-file-pathname (first input) :type :fasl)))
+         (output (compile-file-pathname (lispize-pathname (first input)) :type :fasl)))
     (c:build-fasl output :lisp-files (remove "fas" input :key #'pathname-type :test #'string=))))
 
 (defmethod perform :after ((operation operation) (c component))
@@ -1518,11 +1521,12 @@ recursive calls to traverse.")
         (error 'compile-error :component c :operation operation)))))
 
 (defmethod output-files ((operation compile-op) (c cl-source-file))
-  #-:broken-fasl-loader
-  (list #-ecl (compile-file-pathname (component-pathname c))
-        #+ecl (compile-file-pathname (component-pathname c) :type :object)
-        #+ecl (compile-file-pathname (component-pathname c) :type :fasl))
-  #+:broken-fasl-loader (list (component-pathname c)))
+  (let ((p (lispize-pathname (component-pathname c))))
+    #-:broken-fasl-loader
+    (list #-ecl (compile-file-pathname p)
+          #+ecl (compile-file-pathname p :type :object)
+          #+ecl (compile-file-pathname p :type :fasl))
+    #+:broken-fasl-loader (list p)))
 
 (defmethod perform ((operation compile-op) (c static-file))
   nil)
@@ -1545,7 +1549,7 @@ recursive calls to traverse.")
   #-ecl (mapcar #'load (input-files o c))
   #+ecl (loop :for i :in (input-files o c)
           :unless (string= (pathname-type i) "fas")
-          :collect (let ((output (compile-file-pathname i)))
+          :collect (let ((output (compile-file-pathname (lispize-pathname i))))
                      (load output))))
 
 (defmethod perform-with-restarts (operation component)
@@ -2506,7 +2510,7 @@ return the configuration"
 (defun compile-file-pathname* (input-file &rest keys)
   (apply-output-translations
    (apply #'compile-file-pathname
-          (truenamize (make-pathname :type "lisp" :defaults input-file))
+          (truenamize (lispize-pathname input-file))
           keys)))
 
 ;;;; -----------------------------------------------------------------