diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c
index a01cfb4..a3e5b61 100644
--- a/src/backend/commands/vacuumlazy.c
+++ b/src/backend/commands/vacuumlazy.c
@@ -105,6 +105,8 @@ typedef struct LVRelStats
 	BlockNumber old_rel_pages;	/* previous value of pg_class.relpages */
 	BlockNumber rel_pages;		/* total number of pages */
 	BlockNumber scanned_pages;	/* number of pages we examined */
+	BlockIdData last_scanned_page; /* Used for measuring index scan progress */
+	BlockNumber current_index_scanned_page_count;
 	BlockNumber pinskipped_pages;		/* # of pages we skipped due to a pin */
 	double		scanned_tuples; /* counts only tuples on scanned pages */
 	double		old_rel_tuples; /* previous value of pg_class.reltuples */
@@ -1364,6 +1366,7 @@ lazy_vacuum_index(Relation indrel,
 	ivinfo.strategy = vac_strategy;
 
 	/* Do bulk deletion */
+	vacrelstats->current_index_scanned_page_count=0;
 	*stats = index_bulk_delete(&ivinfo, *stats,
 							   lazy_tid_reaped, (void *) vacrelstats);
 
@@ -1736,7 +1739,20 @@ lazy_tid_reaped(ItemPointer itemptr, void *state)
 {
 	LVRelStats *vacrelstats = (LVRelStats *) state;
 	ItemPointer res;
-
+	BlockNumber current_count;
+	float percentage_complete;
+	if (((itemptr->ip_blkid.bi_hi != vacrelstats->last_scanned_page.bi_hi) || (itemptr->ip_blkid.bi_lo != vacrelstats->last_scanned_page.bi_lo)) && (vacrelstats->current_index_scanned_page_count < vacrelstats->scanned_pages))
+	{
+		vacrelstats->last_scanned_page=itemptr->ip_blkid;
+		vacrelstats->current_index_scanned_page_count = vacrelstats->current_index_scanned_page_count + 1;
+		current_count = vacrelstats->current_index_scanned_page_count;
+		percentage_complete= ((float)current_count/(float)vacrelstats->scanned_pages)*100;
+		elog(WARNING,"Percentage completion %f", percentage_complete);
+	}
+	else
+	{
+		vacrelstats->last_scanned_page=itemptr->ip_blkid;
+	}
 	res = (ItemPointer) bsearch((void *) itemptr,
 								(void *) vacrelstats->dead_tuples,
 								vacrelstats->num_dead_tuples,
