Index: src/uk/me/parabola/mkgmap/osmstyle/RuleIndex.java
===================================================================
--- src/uk/me/parabola/mkgmap/osmstyle/RuleIndex.java	(revision 3819)
+++ src/uk/me/parabola/mkgmap/osmstyle/RuleIndex.java	(working copy)
@@ -208,17 +208,8 @@
 					// rule using the tag, no matter what the value.
 					int ind = s.indexOf('=');
 					if (ind >= 0) {
-						set = tagVals.get(s);
-
-						// Exists rules can also be triggered, so add them too.
 						String key = s.substring(0, ind);
-						BitSet set1 = existKeys.get(key);
-
-						if (set == null)
-							set = set1;
-						else if (set1 != null)
-							set.or(set1);
-
+						set = tagnames.get(key);
 					} else {
 						set = tagnames.get(s);
 					}
@@ -260,7 +251,7 @@
 
 		// compress the index: create one hash map with one entry for each key
 		int highestKey = 0;
-		for (Map.Entry<String, BitSet> entry  : existKeys.entrySet()){
+		for (Map.Entry<String, BitSet> entry  : tagnames.entrySet()){
 			Short skey = TagDict.getInstance().xlate(entry.getKey());
 			if (skey > highestKey)
 				highestKey = skey;
