diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/FilterSet.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/FilterSet.java
index 972f8db..61b9ef9 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/FilterSet.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/FilterSet.java
@@ -50,7 +50,7 @@
 public class FilterSet {
 	
 	
-	private final static int POST_DELAY= 400;
+	private final static int POST_DELAY_NANOS= 200 * 1_000_000;
 	
 	private final static int STD_DELAY= 1;
 	private final static int NO_DELAY= 2;
@@ -111,7 +111,8 @@
 	
 	private final CopyOnWriteIdentityListSet<FilterListener> listeners= new CopyOnWriteIdentityListSet<>();
 	private final CopyOnWriteIdentityListSet<FilterListener> postListeners= new CopyOnWriteIdentityListSet<>();
-	private volatile int listenerScheduled;
+	private int listenerScheduled;
+	private long listenerEventStamp;
 	private final Runnable listenerRunnable= this::updateWithinRealm;
 	private final ScheduledRealmRunnable postListenerRunnable;
 	
@@ -417,14 +418,21 @@
 	}
 	
 	private void updateWithinRealm() {
-		final long stamp= System.nanoTime();
-		final int schedule= this.listenerScheduled;
-		this.listenerScheduled= 0;
+		final long stamp;
+		final int schedule;
+		synchronized (this.listenerRunnable) {
+			schedule= this.listenerScheduled;
+			this.listenerScheduled= 0;
+			stamp= this.listenerEventStamp;
+		}
+		if (schedule == 0) {
+			return;
+		}
 		
 		notifyListeners();
 		
 		if (schedule != NO_DELAY) {
-			this.postListenerRunnable.scheduleFor(stamp + POST_DELAY);
+			this.postListenerRunnable.scheduleFor(stamp + POST_DELAY_NANOS);
 		}
 		else {
 			this.postListenerRunnable.runNow();
@@ -512,11 +520,14 @@
 	}
 	
 	private void notifyListeners(final int mode) {
-		final int schedule= this.listenerScheduled;
-		if (schedule >= mode) {
-			return;
+		synchronized (this.listenerRunnable) {
+			final int schedule= this.listenerScheduled;
+			if (schedule >= mode) {
+				return;
+			}
+			this.listenerScheduled= mode;
+			this.listenerEventStamp= System.nanoTime();
 		}
-		this.listenerScheduled= mode;
 		runInRealm(this.listenerRunnable);
 	}
 	
