diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 9db184f8fe..c280744fdd 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -1995,10 +1995,6 @@ GetRunningTransactionData(void)
 		volatile PGXACT *pgxact = &allPgXact[pgprocno];
 		TransactionId xid;
 
-		/* Ignore procs running LAZY VACUUM */
-		if (pgxact->vacuumFlags & PROC_IN_VACUUM)
-			continue;
-
 		/* Fetch xid just once - see GetNewTransactionId */
 		xid = pgxact->xid;
 
@@ -2009,13 +2005,21 @@ GetRunningTransactionData(void)
 		if (!TransactionIdIsValid(xid))
 			continue;
 
-		xids[count++] = xid;
-
+		/*
+		 * Be careful not to exclude any xids from calculating the values of
+		 * oldestRunningXid and suboverflowed.
+		 */
 		if (TransactionIdPrecedes(xid, oldestRunningXid))
 			oldestRunningXid = xid;
 
 		if (pgxact->overflowed)
 			suboverflowed = true;
+
+		/* Ignore procs running LAZY VACUUM */
+		if (pgxact->vacuumFlags & PROC_IN_VACUUM)
+			continue;
+
+		xids[count++] = xid;
 	}
 
 	/*
