diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 9da50d9d67facf6cf68dd13005586e493e79f854..5217b8c8c8407b5f83be60d2580dc20697981860 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-03-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libfortran/39409
+	* io/write_float.def (output_float): Handle F0.d formatting correctly
+	for any d when value is 0.0.
+
 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
 	* configure: Regenerate.
diff --git a/libgfortran/io/write_float.def b/libgfortran/io/write_float.def
index f94fde30b702d14591b964285f8ac2ce50b3fd0e..17bd7844560125513b5472d6729132d2955a6a06 100644
--- a/libgfortran/io/write_float.def
+++ b/libgfortran/io/write_float.def
@@ -122,7 +122,7 @@ output_float (st_parameter_dt *dtp, const fnode *f, char *buffer, size_t size,
 
       /* Handle special cases.  */
       if (w == 0)
-	w = 2;
+	w = d + 2;
 
       /* For this one we choose to not output a decimal point.
 	 F95 10.5.1.2.1  */