diff --git a/pkg/domain/infra/abi/system.go b/pkg/domain/infra/abi/system.go
index 6e26026d4d..2bd88ed853 100644
--- a/pkg/domain/infra/abi/system.go
+++ b/pkg/domain/infra/abi/system.go
@@ -319,8 +319,8 @@ func (ic *ContainerEngine) SystemDf(ctx context.Context, options entities.System
 	}
 
 	dfVolumes := make([]*entities.SystemDfVolumeReport, 0, len(vols))
-	var reclaimableSize uint64
 	for _, v := range vols {
+		var reclaimableSize uint64
 		var consInUse int
 		mountPoint, err := v.MountPoint()
 		if err != nil {
@@ -341,7 +341,7 @@ func (ic *ContainerEngine) SystemDf(ctx context.Context, options entities.System
 			return nil, err
 		}
 		if len(inUse) == 0 {
-			reclaimableSize += volSize
+			reclaimableSize = volSize
 		}
 		for _, viu := range inUse {
 			if cutil.StringInSlice(viu, runningContainers) {
diff --git a/test/e2e/system_df_test.go b/test/e2e/system_df_test.go
index 5a23fc0bb5..712d16a6af 100644
--- a/test/e2e/system_df_test.go
+++ b/test/e2e/system_df_test.go
@@ -70,6 +70,17 @@ var _ = Describe("podman system df", func() {
 		Expect(containers[1]).To(Equal("2"), "total containers expected")
 		Expect(volumes[2]).To(Equal("2"), "total volumes expected")
 		Expect(volumes[6]).To(Equal("(50%)"), "percentage usage expected")
+
+		session = podmanTest.Podman([]string{"rm", "container1"})
+		session.WaitWithDefaultTimeout()
+		Expect(session).Should(Exit(0))
+		session = podmanTest.Podman([]string{"system", "df"})
+		session.WaitWithDefaultTimeout()
+		Expect(session).Should(Exit(0))
+		volumes = strings.Fields(session.OutputToStringArray()[3])
+		// percentages on volumes were being calculated incorrectly. Make sure we only report 100% and not above
+		Expect(volumes[6]).To(Equal("(100%)"), "percentage usage expected")
+
 	})
 
 	It("podman system df image with no tag", func() {