diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 28f06c46cd3a7c832a51b7d3dc62b1281907d2b7..fad67121327680f0ea655cd3397137068e819a19 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -876,7 +876,7 @@ class sql_result {
             } else {
               [ value ] = cr->sscanf(collen == 4 ? "%4F" : "%8F");
               if (alltext)
-                value = (string)value;
+                value = sprintf("%.*g", collen == 4 ? 10 : 20, value);
               break;
             }
           default:value = cr->read(collen);