--- src/ipelib/ipebase.cpp	2008-12-27 21:46:16.000000000 +0000
+++ src/ipelib/ipebase_new.cpp	2008-12-27 23:04:46.000000000 +0000
@@ -520,8 +520,10 @@
     std::sprintf(buf, "%d", int(dd + 0.5));
     PutCString(buf);
     // 10^7 < 2^31
-    int v = int(1000000.0 * (d - dd) + 0.5); 
-    v %= 1000000L;
+    int v = int(1000000.0 * (d - dd) + 0.5);
+    if (v >= 1000000L) {
+      v = 999999L;
+    }
     if (v != 0) {
       PutChar('.');
       while (v != 0) {
