diff --git a/src/bin/pg_checksums/pg_checksums.c b/src/bin/pg_checksums/pg_checksums.c
index 0223ee4408..2d078d8fbb 100644
--- a/src/bin/pg_checksums/pg_checksums.c
+++ b/src/bin/pg_checksums/pg_checksums.c
@@ -229,12 +229,17 @@ scan_file(const char *fn, BlockNumber segmentno)
 		}
 		blocks++;
 
+		/*
+		 * The current_size is calculated before checking if header is a
+		 * new page, because total_size includes the size of new pages.
+		 */
+		current_size += r;
+
 		/* New pages have no checksum yet */
 		if (PageIsNew(header))
 			continue;
 
 		csum = pg_checksum_page(buf.data, blockno + segmentno * RELSEG_SIZE);
-		current_size += r;
 		if (mode == PG_MODE_CHECK)
 		{
 			if (csum != header->pd_checksum)
