--- json.tcl.orig	2007-09-22 13:10:39.000000000 +0900
+++ json.tcl	2009-04-16 22:54:51.328125000 +0900
@@ -194,7 +194,7 @@
 	    # but it may be 0.xxx
 	    string is double -failindex last $txt
 	    if {$last > 0} {
-		set num [string range $txt 0 [expr {$last - 1}]]
+        regexp -- {-?[\d\.]+} $txt num
 		set txt [string range $txt $last end]
 
 		switch -- $state {
