diff --git a/ghc/runtime/storage/SMstats.lc b/ghc/runtime/storage/SMstats.lc
index f67c4e7ae16ddb45b32b9c6af1e5d35166018ef8..90349dcc15e656d2f67cc8cfe1f179b9974ea4df 100644
--- a/ghc/runtime/storage/SMstats.lc
+++ b/ghc/runtime/storage/SMstats.lc
@@ -517,7 +517,12 @@ stat_exit(I_ alloc)
 	fprintf(sf, "  %%GC time     %5.1f%%  (%.1f%% elapsed)\n\n",
 		GC_tot_time*100./time, GCe_tot_time*100./etime);
 
-	ullong_format_string((ullong)(GC_tot_alloc*sizeof(W_)/(time - GC_tot_time)), temp, rtsTrue/*commas*/);
+	if (time - GC_tot_time == 0.0)
+		ullong_format_string((ullong)0, temp, rtsTrue/*commas*/);
+	else
+		ullong_format_string((ullong)
+			(time - GC_tot_time)), temp, rtsTrue/*commas*/);
+
 	fprintf(sf, "  Alloc rate    %s bytes per MUT second\n\n", temp);
 
 	fprintf(sf, "  Productivity %5.1f%% of total user, %.1f%% of total elapsed\n\n",