diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index e2bc80339b0f12c7caa0633285da03774a43b0ab..53db2b201abf3cd2019bc322cd316931ad421424 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -1348,9 +1348,10 @@ class sql_result {
 
   private void replenishrows() {
     if (_fetchlimit && sizeof(datarows) <= _fetchlimit >> 1) {
-      _fetchlimit =
-       min((portalbuffersize >> 1) * index / bytesreceived || 1,
-        pgsqlsess._fetchlimit);
+      _fetchlimit = pgsqlsess._fetchlimit;
+      if (bytesreceived)
+        _fetchlimit =
+         min((portalbuffersize >> 1) * index / bytesreceived || 1, _fetchlimit);
       Thread.MutexKey lock = closemux->lock();
       if (_fetchlimit && inflight <= (_fetchlimit - 1) >> 1)
         _sendexecute(_fetchlimit);