diff --git a/TODO b/TODO
index f7d8fd7545ff5871a321804fe0db53c9db939594..3a76a9739d95cbba123a6ff089bc44306f18bd2c 100644
--- a/TODO
+++ b/TODO
@@ -189,7 +189,9 @@
 *** have a function verify-strict-asd that can verify a asd is pure lp#541562
    Then if it passes, use load-strict-asd.
    If not, optionally issue a warning. Start migrating people toward that.
-*** Include tests for prebuilt-system in test-bundle and in test-program.
+** Include tests for prebuilt-system in test-bundle and in test-program.
+** Test that a package-system secondary system is properly superseded
+   when the primary system is redefined.
 
 * Learn to use cl-grid-test
 ** So we can easily make sure ASDF changes don't break stuff,
diff --git a/uiop/os.lisp b/uiop/os.lisp
index 24743a322518922e773e0e03f4454ede50ae9fd7..d90e1abb4d5b65c421f6691cd5a40652234e1b0e 100644
--- a/uiop/os.lisp
+++ b/uiop/os.lisp
@@ -68,7 +68,7 @@ except on ABCL where it might change between FASL compilation and runtime."
                                          (:genera . os-genera-p) (:os-oldmac . os-oldmac-p))
            :when (and (or (not o) (eq feature :os-macosx)) (funcall detect))
            :do (setf o feature) (pushnew feature *features*)
-           :else :do (remove feature *features*)
+           :else :do (setf *features* (remove feature *features*))
            :finally
            (return (or o (error "Congratulations for trying ASDF on an operating system~%~
 that is neither Unix, nor Windows, nor Genera, nor even old MacOS.~%Now you port it.")))))