diff --git a/core/sis-feature/src/main/java/org/apache/sis/filter/ComparisonFunction.java b/core/sis-feature/src/main/java/org/apache/sis/filter/ComparisonFunction.java
index dcfccfd..67a580f 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/ComparisonFunction.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/ComparisonFunction.java
@@ -164,11 +164,9 @@
                  * All values in the collection may be compared to the other value until match condition is met.
                  * Null elements in the collection are ignored.
                  */
-                boolean found  = false;
-                boolean hasOne = false;
+                boolean match = false;
                 for (final Object element : collection) {
                     if (element != null) {
-                        found = true;
                         final boolean pass;
                         if (collectionFirst) {
                             pass = evaluate(element, right);
@@ -176,19 +174,26 @@
                             pass = evaluate(left, element);
                         }
                         switch (matchAction) {
-                            default:  return false;                            // Unknown enumeration.
-                            case ALL: if (!pass) return false; else break;
-                            case ANY: if ( pass) return true;  else break;
+                            default: return false;              // Unknown enumeration.
+                            case ALL: {
+                                if (!pass) return false;
+                                match = true;                   // Remember that we have at least 1 value.
+                                break;
+                            }
+                            case ANY: {
+                                if (pass) return true;
+                                break;                          // `match` still false since no match.
+                            }
                             case ONE: {
                                 if (pass) {
-                                    if (hasOne) return false;
-                                    hasOne = true;
+                                    if (match) return false;    // If a value has been found previously.
+                                    match = true;               // Remember that we have exactly one value.
                                 }
                             }
                         }
                     }
                 }
-                return found;
+                return match;
             }
         }
         return false;
