diff --git a/skeletons/REAL.c b/skeletons/REAL.c
index 6a06ea5..68157de 100644
--- a/skeletons/REAL.c
+++ b/skeletons/REAL.c
@@ -168,7 +168,13 @@
 	do {
 		ret = snprintf(buf, buflen, fmt, d);
 		if(ret < 0) {
+			/* There are some old broken APIs. */
 			buflen <<= 1;
+			if(buflen > 4096) {
+				/* Should be plenty. */
+				if(buf != local_buf) FREEMEM(buf);
+				return -1;
+			}
 		} else if(ret >= buflen) {
 			buflen = ret + 1;
 		} else {
@@ -188,12 +194,12 @@
 		char *dot;
 		char *end = buf + buflen;
 		char *last_zero;
-		char *prev_zero;
+		char *first_zero_in_run;
         char *s;
 
         enum {
             LZSTATE_NOTHING,
-            LZSTATE_SEEN_ZERO
+            LZSTATE_ZEROES
         } lz_state = LZSTATE_NOTHING;
 
 		dot = (buf[0] == 0x2d /* '-' */) ? (buf + 2) : (buf + 1);
@@ -204,16 +210,14 @@
 		}
 		*dot = 0x2e;		/* Replace possible comma */
 
-		for(prev_zero = last_zero = s = dot + 2; s < end; s++) {
+        for(first_zero_in_run = last_zero = s = dot + 2; s < end; s++) {
             switch(*s) {
             case 0x45: /* 'E' */
-                if(lz_state == LZSTATE_SEEN_ZERO)
-                    last_zero = prev_zero;
+                if(lz_state == LZSTATE_ZEROES) last_zero = first_zero_in_run;
                 break;
-            case 0x30:  /* '0' */
-                if(lz_state == LZSTATE_NOTHING)
-                    prev_zero = s;
-                lz_state = LZSTATE_SEEN_ZERO;
+            case 0x30: /* '0' */
+                if(lz_state == LZSTATE_NOTHING) first_zero_in_run = s;
+                lz_state = LZSTATE_ZEROES;
                 continue;
             default:
                 lz_state = LZSTATE_NOTHING;
@@ -253,7 +257,7 @@
                 buflen--;
                 expptr++;
             }
-            if(*last_zero == 0x30) {
+            if(lz_state == LZSTATE_ZEROES) {
                 *last_zero = 0x45;	/* E */
                 buflen -= s - (last_zero + 1);
                 s = last_zero + 1;
