diff --git a/lib/carto/tree/filterset.js b/lib/carto/tree/filterset.js
index c4f1d6f8c..8298358a9 100644
--- a/lib/carto/tree/filterset.js
+++ b/lib/carto/tree/filterset.js
@@ -209,14 +209,6 @@ tree.Filterset.prototype.add = function(filter, env) {
     } else if (op === '=~') {
         this.filters[key + '=~' + filter.val] = filter;
     } else if (op === '>') {
-        // If there are other filters that are also >
-        // but are less than this one, they don't matter, so
-        // remove them.
-        for (var j in this.filters) {
-            if (this.filters[j].key == key && this.filters[j].val <= filter.val) {
-                delete this.filters[j];
-            }
-        }
         this.filters[key + '>'] = filter;
     } else if (op === '>=') {
         for (var k in this.filters) {
diff --git a/test/filterset.test.js b/test/filterset.test.js
index 57500ae7f..935c6127d 100644
--- a/test/filterset.test.js
+++ b/test/filterset.test.js
@@ -225,12 +225,12 @@ describe('Filtersets', function() {
         f = new tree.Filterset();
         f.add({ key: 'TOTAL', op: '!=', val: '11' });
         f.add({ key: 'TOTAL', op: '>',  val:  11 });
-        assert.deepEqual(f.filters, { 'TOTAL>':   { key: 'TOTAL', op: '>',  val:  11 }});
+        assert.deepEqual(f.filters, {"TOTAL!=11":{"key":"TOTAL","op":"!=","val":"11"},"TOTAL>":{"key":"TOTAL","op":">","val":11}});
 
         f = new tree.Filterset();
         f.add({ key: 'TOTAL', op: '!=', val: '11' });
         f.add({ key: 'TOTAL', op: '>',  val:  90 });
-        assert.deepEqual(f.filters, { 'TOTAL>':   { key: 'TOTAL', op: '>',  val:  90 }});
+        assert.deepEqual(f.filters, {"TOTAL!=11":{"key":"TOTAL","op":"!=","val":"11"},"TOTAL>":{"key":"TOTAL","op":">","val":90}});
         
         f = new tree.Filterset();
         f.add({ key: 'TOTAL', op: '!=', val: '11' });
diff --git a/test/rendering-mss/issue_370.mss b/test/rendering-mss/issue_370.mss
new file mode 100644
index 000000000..6cd02b14a
--- /dev/null
+++ b/test/rendering-mss/issue_370.mss
@@ -0,0 +1,3 @@
+[way_pixels < 192000][way_pixels > 3000] { 
+  line-width: 1;
+}
\ No newline at end of file
diff --git a/test/rendering-mss/issue_370.xml b/test/rendering-mss/issue_370.xml
new file mode 100644
index 000000000..ef7c57320
--- /dev/null
+++ b/test/rendering-mss/issue_370.xml
@@ -0,0 +1,6 @@
+<Style name="style" filter-mode="first">
+  <Rule>
+    <Filter>([way_pixels] &lt; 192000) and ([way_pixels] &gt; 3000)</Filter>
+    <LineSymbolizer stroke-width="1" />
+  </Rule>
+</Style>
\ No newline at end of file
diff --git a/test/rendering-mss/issue_370_b.mss b/test/rendering-mss/issue_370_b.mss
new file mode 100644
index 000000000..97acbdc77
--- /dev/null
+++ b/test/rendering-mss/issue_370_b.mss
@@ -0,0 +1,3 @@
+[way_pixels <= 192000][way_pixels >= 3000] { 
+  line-width: 1;
+}
\ No newline at end of file
diff --git a/test/rendering-mss/issue_370_b.xml b/test/rendering-mss/issue_370_b.xml
new file mode 100644
index 000000000..4c3a29d02
--- /dev/null
+++ b/test/rendering-mss/issue_370_b.xml
@@ -0,0 +1,6 @@
+<Style name="style" filter-mode="first">
+  <Rule>
+    <Filter>([way_pixels] &lt;= 192000) and ([way_pixels] &gt;= 3000)</Filter>
+    <LineSymbolizer stroke-width="1" />
+  </Rule>
+</Style>
\ No newline at end of file