xplist: Fix dtostr() inserting ':' to output string when fractional part overflows
diff --git a/src/xplist.c b/src/xplist.c
index c89b143..fc8fd61 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -107,9 +107,22 @@
     int64_t v;
     size_t len;
     size_t p;
+    double CORR = 0.0000005;
 
     f = modf(f, &ip);
-    len = snprintf(buf, bufsize, "%s%"PRIi64, ((f < 0) && (ip >= 0)) ? "-" : "", (int64_t)ip);
+    v = (int64_t)ip;
+    if (f < 0) {
+        if (((int)((f - CORR) * -10.0f)) >= 10) {
+            v--;
+            f = 0;
+        }
+    } else {
+        if (((int)((f + CORR) * 10.0f)) >= 10) {
+            v++;
+            f = 0;
+        }
+    }
+    len = snprintf(buf, bufsize, "%s%"PRIi64, ((f < 0) && (ip >= 0)) ? "-" : "", v);
     if (len >= bufsize) {
         return 0;
     }
@@ -117,7 +130,7 @@
     if (f < 0) {
         f *= -1;
     }
-    f += 0.0000004;
+    f += CORR;
 
     p = len;
     buf[p++] = '.';