Say I download version 1 of the FOO library and put it in /tmp/foo-1/, so it looks like this: /tmp/foo-1/foo.asd /tmp/foo-1/a.lisp foo.asd has this: (asdf:defsystem #:foo :serial t :components ((:file "a"))) Then I add the path to the central registry and load it: (push #p"/tmp/foo-1/" asdf:*central-registry*) (asdf:load-system "foo") Everything loads fine. Oops, I need to upgrade, I better get version 2 and put it in /tmp/foo-2/, which looks like this: /tmp/foo-2/foo.asd /tmp/foo-2/a.lisp /tmp/foo-2/b.lisp foo.asd looks like this: (asdf:defsystem #:foo :serial t :components ((:file "a") (:file "b"))) Then I add the path to central registry: (push #p"/tmp/foo-2/" asdf:*central-registry*) It seems to find the new system: (asdf:system-source-directory "foo") => #p"/tmp/foo-2/" However, when I try this: (asdf:load-system "foo") I end up with this error, which I don't really understand: failed to find the TRUENAME of /tmp/foo-1/b.lisp: No such file or directory Why does that happen? What's the best way to work around it? I'm using ASDF 2.017 and a very recent SBCL from git. You can reproduce my scenario by unpacking http://xach.com/tmp/foofail.tgz and loading "foofail.lisp". Thanks, Zach