diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 4adc7052208dbf832c45d571ab421a4986e80807..0e365018a9a4bdabb8da31c39d93eaa67a1a2998 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -604,12 +604,12 @@ (define upgrade?
     (options->upgrade-predicate opts))
 
   (define upgraded
-    (fold (lambda (entry transaction)
-            (if (upgrade? (manifest-entry-name entry))
-                (transaction-upgrade-entry entry transaction)
-                transaction))
-          transaction
-          (manifest-entries manifest)))
+    (fold-right (lambda (entry transaction)
+                  (if (upgrade? (manifest-entry-name entry))
+                      (transaction-upgrade-entry entry transaction)
+                      transaction))
+                transaction
+                (manifest-entries manifest)))
 
   (define to-install
     (filter-map (match-lambda