Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Content/FilterContent.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Content/FilterContent.cs	(revision 15431)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Content/FilterContent.cs	(revision 15466)
@@ -20,5 +20,7 @@
 #endregion
 
+using System.Collections.Generic;
 using System.Drawing;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -38,4 +40,29 @@
     [Storable]
     public bool IsAndCombination { get; set; }
+
+    public IEnumerable<IFilter> ActiveFilters {
+      get { return Filters.Where(f => f.Active && f.ConstraintData != null); }
+    }
+
+    public bool[] GetRemainingRows() {
+      var remainingRows = new bool[PreprocessingData.Rows];
+      if (ActiveFilters.Any()) {
+        var filterResults = ActiveFilters.Select(f => f.Check()).ToList();
+        var rowFilterResults = new bool[filterResults.Count];
+        for (int row = 0; row < remainingRows.Length; row++) {
+          for (int i = 0; i < filterResults.Count; i++)
+            rowFilterResults[i] = filterResults[i][row];
+
+          remainingRows[row] = IsAndCombination
+            ? rowFilterResults.All(x => x)
+            : rowFilterResults.Any(x => x);
+        }
+      } else {
+        // if not filters active => all rows are remaining
+        for (int i = 0; i < remainingRows.Length; i++)
+          remainingRows[i] = true;
+      }
+      return remainingRows;
+    }
 
     #region Constructor, Cloning & Persistence
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Data/FilteredPreprocessingData.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Data/FilteredPreprocessingData.cs	(revision 15431)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Data/FilteredPreprocessingData.cs	(revision 15466)
@@ -43,7 +43,7 @@
 
     #region Constructor, Cloning & Persistence
-    public FilteredPreprocessingData(IPreprocessingData preporcessingData)
+    public FilteredPreprocessingData(IPreprocessingData preprocessingData)
       : base() {
-      originalData = preporcessingData;
+      originalData = preprocessingData;
       filteredData = null;
     }
@@ -317,9 +317,9 @@
 
     #region Filters
-    public void SetFilter(bool[] rowFilters) {
+    public void SetFilter(bool[] remainingRows) {
       filteredData = (IPreprocessingData)originalData.Clone();
       filteredData.InTransaction(() => {
-        for (int row = (rowFilters.Length - 1); row >= 0; --row) {
-          if (rowFilters[row]) {
+        for (int row = (remainingRows.Length - 1); row >= 0; --row) {
+          if (!remainingRows[row]) {
             filteredData.DeleteRow(row);
           }
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Data/IFilteredPreprocessingData.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Data/IFilteredPreprocessingData.cs	(revision 15431)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Data/IFilteredPreprocessingData.cs	(revision 15466)
@@ -25,5 +25,5 @@
   public interface IFilteredPreprocessingData : IPreprocessingData {
     #region Filters
-    void SetFilter(bool[] rowFilters);
+    void SetFilter(bool[] remainingRows);
     void PersistFilter();
     void ResetFilter();
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Filter/ComparisonFilter.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Filter/ComparisonFilter.cs	(revision 15431)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Filter/ComparisonFilter.cs	(revision 15466)
@@ -86,4 +86,5 @@
     }
 
+    // return remaining rows
     public new bool[] Check() {
       bool[] result = new bool[ConstrainedValue.Rows];
@@ -102,5 +103,5 @@
         }
 
-        result[row] = !base.Check(item);
+        result[row] = base.Check(item);
       }
 
