diff --git a/include/zipr_stats.h b/include/zipr_stats.h
index 2dfb2774008a68aee12bbe6ac666f003605491e1..9f4e1f8aa01cd93998d37811f1514018b79ad7f7 100644
--- a/include/zipr_stats.h
+++ b/include/zipr_stats.h
@@ -18,6 +18,7 @@ class Stats_t
 			total_5byte_pins = 0;
 			total_tramp_space = 0;
 			total_other_space = 0;
+			total_free_ranges = 0;
 		};
 
 		void PrintStats(Options_t opts, std::ostream &out);
@@ -35,6 +36,7 @@ class Stats_t
 		int total_5byte_pins;
 		int total_tramp_space;
 		int total_other_space;
+		int total_free_ranges;
 
 		/*
 		 * Optimization stats tracking.
diff --git a/src/zipr.cpp b/src/zipr.cpp
index a1bc6cd392c68817b2f21055cb482043f53303b2..903867e9295d7570e0b7bdc3a9a0dc0ffb99fbdc 100644
--- a/src/zipr.cpp
+++ b/src/zipr.cpp
@@ -107,6 +107,8 @@ void Zipr_t::CreateBinaryFile(const std::string &name)
 	// go ahead and update any callback sites with the new locations 
 	UpdateCallbacks();
 
+	m_stats->total_free_ranges = free_ranges.length();
+
 	// write binary file to disk 
 	OutputBinaryFile(name);