b7b1e5
diff -up ghostscript-9.07/trio/trio.c~ ghostscript-9.07/trio/trio.c
b7b1e5
--- ghostscript-9.07/trio/trio.c~	2014-05-14 16:44:46.390090859 +0100
b7b1e5
+++ ghostscript-9.07/trio/trio.c	2014-05-14 17:52:24.247609272 +0100
b7b1e5
@@ -3172,6 +3172,9 @@ TRIO_ARGS6((self, number, flags, width,
b7b1e5
   if (integerNumber > epsilon)
b7b1e5
     {
b7b1e5
       integerDigits += (int)TrioLogarithm(integerNumber, base);
b7b1e5
+      /* Deal with the dangers of casting long double to int */
b7b1e5
+      if (integerNumber - TrioPower (base, integerDigits) >= 0)
b7b1e5
+	integerDigits++;
b7b1e5
     }
b7b1e5
 
b7b1e5
   fractionDigits = precision;
b7b1e5
@@ -3255,6 +3258,11 @@ TRIO_ARGS6((self, number, flags, width,
b7b1e5
 	      integerDigits = (integerNumber > epsilon)
b7b1e5
 		? 1 + (int)TrioLogarithm(integerNumber, base)
b7b1e5
 		: 1;
b7b1e5
+
b7b1e5
+	      /* Deal with the dangers of casting long double to int */
b7b1e5
+	      if (integerNumber - TrioPower (base, integerDigits) >= 0)
b7b1e5
+		integerDigits++;
b7b1e5
+
b7b1e5
 	      if (flags & FLAGS_FLOAT_G)
b7b1e5
 		{
b7b1e5
 		  if (flags & FLAGS_ALTERNATIVE)