diff --git a/contrib/pgstattuple/pgstatindex.c b/contrib/pgstattuple/pgstatindex.c
index f0d6341bd16145847a32f6c0a024086ff39a3f07..178065ceda57f91142675966a939889a4d2eed29 100644
--- a/contrib/pgstattuple/pgstatindex.c
+++ b/contrib/pgstattuple/pgstatindex.c
@@ -235,9 +235,17 @@ pgstatindex(PG_FUNCTION_ARGS)
 		values[j] = palloc(32);
 		snprintf(values[j++], 32, INT64_FORMAT, indexStat.deleted_pages);
 		values[j] = palloc(32);
-		snprintf(values[j++], 32, "%.2f", 100.0 - (double) indexStat.free_space / (double) indexStat.max_avail * 100.0);
+		if (indexStat.max_avail > 0)
+			snprintf(values[j++], 32, "%.2f",
+					 100.0 - (double) indexStat.free_space / (double) indexStat.max_avail * 100.0);
+		else
+			snprintf(values[j++], 32, "NaN");
 		values[j] = palloc(32);
-		snprintf(values[j++], 32, "%.2f", (double) indexStat.fragments / (double) indexStat.leaf_pages * 100.0);
+		if (indexStat.leaf_pages > 0)
+			snprintf(values[j++], 32, "%.2f",
+					 (double) indexStat.fragments / (double) indexStat.leaf_pages * 100.0);
+		else
+			snprintf(values[j++], 32, "NaN");
 
 		tuple = BuildTupleFromCStrings(TupleDescGetAttInMetadata(tupleDesc),
 									   values);