diff --git a/asdf-ops.lisp b/asdf-ops.lisp
index ba0bb3442f4102aeab6edacf874246ecf60862e7..fc7490fd69c137904150cca3cfe8c9fcf85a0856 100644
--- a/asdf-ops.lisp
+++ b/asdf-ops.lisp
@@ -229,7 +229,9 @@ to the base of the system."
 ;;                      :debug-object-types debug-object-types
                       :base-pathname base-pathname))))))
     (let ((destination-file (first (asdf:output-files op c))))
-      #+clisp (delete-file destination-file)
+      #+clisp
+      (posix:copy-file tmp-file-name destination-file :method :rename)
+      #-clisp
       (rename-file tmp-file-name destination-file
                    #+clozure :if-exists #+clozure :rename-and-delete))))