Index: generic/tclStrToD.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclStrToD.c,v
retrieving revision 1.44
diff -u -r1.44 tclStrToD.c
--- generic/tclStrToD.c	3 May 2010 14:36:41 -0000	1.44
+++ generic/tclStrToD.c	4 May 2010 13:35:50 -0000
@@ -105,6 +105,7 @@
 static int mantBits;		/* Number of bits in a double's significand */
 static mp_int pow5[9];		/* Table of powers of 5**(2**n), up to
 				 * 5**256 */
+static double tiny = 0.0;		/* The smallest representable double */
 static int maxDigits;		/* The maximum number of digits to the left of
 				 * the decimal point of a double. */
 static int minDigits;		/* The maximum number of digits to the right
@@ -1484,8 +1485,11 @@
 	goto returnValue;
     }
     retval = SafeLdExp(retval, machexp);
-    if (retval <= 0.0) {
-	retval = SafeLdExp(1.0, DBL_MIN_EXP * log2FLT_RADIX - mantBits);
+	if (tiny == 0.0) {
+	    tiny = SafeLdExp(1.0, DBL_MIN_EXP * log2FLT_RADIX - mantBits);
+	}
+    if (retval < tiny) {
+	retval = tiny;
     }
 
     /*
