diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 50547f3ce9e3f439a3f6e48e1941ea42b256b371..5f6400cfe89203d0973a39aa6794f2ead707a107 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -925,35 +925,23 @@ class sql_result {
               int magnitude = cr->read_sint(2);
               int sign = cr->read_int16();
               cr->consume(2);
-              switch (nwords) {
-                default:
-                  for (value = cr->read_int16();
-                       --nwords;
-                       magnitude--)
-                    value = value * NUMERIC_MAGSTEP + cr->read_int16();
-                  if (sign)
-                    value = -value;
-                  if (magnitude > 0)
-                    do
-                      value *= NUMERIC_MAGSTEP;
-                    while (--magnitude);
-                  else if (magnitude < 0) {
-                    for (sign = NUMERIC_MAGSTEP;
-                         ++magnitude;
-                         sign *= NUMERIC_MAGSTEP);
-                    value = Gmp.mpq(value, sign);
-                  }
-                  break;
-                case 1:
-                  for (value = cr->read_int16();
-                       magnitude--;
-                       value *= NUMERIC_MAGSTEP);
-                  if (sign)
-                    value = -value;
-                  break;
-                case 0:;
-                  value = 0;
-              }
+              if (nwords) {
+                for (value = cr->read_int16(); --nwords; magnitude--)
+                  value = value * NUMERIC_MAGSTEP + cr->read_int16();
+                if (sign)
+                  value = -value;
+                if (magnitude > 0)
+                  do
+                    value *= NUMERIC_MAGSTEP;
+                  while (--magnitude);
+                else if (magnitude < 0) {
+                  for (sign = NUMERIC_MAGSTEP;
+                       ++magnitude;
+                       sign *= NUMERIC_MAGSTEP);
+                  value = Gmp.mpq(value, sign);
+                }
+              } else
+                value = 0;
               if (alltext)
                 value = (string)value;
             }