implement suggestions
diff --git a/lib/compress/huf_compress.c b/lib/compress/huf_compress.c
index d7755e0..9a4cde6 100644
--- a/lib/compress/huf_compress.c
+++ b/lib/compress/huf_compress.c
@@ -1264,7 +1264,7 @@
         size_t maxBits, hSize, newSize;
         const unsigned symbolCardinality = HUF_cardinality(count, maxSymbolValue);
         const unsigned minTableLog = HUF_minTableLog(symbolCardinality);
-        size_t optSize = ((size_t) ~0);
+        size_t optSize = ((size_t) ~0) - 1;
         unsigned optLogGuess;
 
         if (wkspSize < sizeof(HUF_buildCTable_wksp_tables)) return optLog; /** Assert workspace is large enough **/
@@ -1275,17 +1275,22 @@
 
             if (ERR_isError(maxBits)) continue;
 
+            if (maxBits < optLogGuess && optLogGuess > minTableLog) break;
+
             hSize = HUF_writeCTable_wksp(dst, dstSize, table, maxSymbolValue, (U32)maxBits, workSpace, wkspSize);
 
             if (ERR_isError(hSize)) continue;
 
             newSize = HUF_estimateCompressedSize(table, count, maxSymbolValue) + hSize;
 
-            if (newSize > optSize) {
+            if (newSize > optSize + 1) {
                 break;
             }
-            optSize = newSize;
-            optLog = optLogGuess;
+
+            if (newSize < optSize) {
+                optSize = newSize;
+                optLog = optLogGuess;
+            }
         }
     }
     assert(optLog <= HUF_TABLELOG_MAX);