diff --git a/data/validator/combinations.mapcss b/data/validator/combinations.mapcss
index 58809d7..1670223 100644
--- a/data/validator/combinations.mapcss
+++ b/data/validator/combinations.mapcss
@@ -258,7 +258,7 @@ way[highway][natural],
 /* see #10471 */
 way[waterway] > node[ford?] { set ford_on_waterway; }
 way[highway] > node[ford?] { set ford_on_highway; }
-node[ford?]!.ford_on_waterway, node[ford?]!.ford_on_highway {
+node[ford?]:indownloadedarea!.ford_on_waterway, node[ford?]:indownloadedarea!.ford_on_highway {
     throwWarning: tr("{0} should be on the node where {1} and {2} intersect", "ford", "highway", "waterway");
 }
 
diff --git a/src/org/openstreetmap/josm/actions/search/SearchCompiler.java b/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
index 5e64226..3d06193 100644
--- a/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
+++ b/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
@@ -1219,7 +1219,7 @@ public class SearchCompiler {
     /**
      * Matches objects within source area ("downloaded area").
      */
-    private static class InDataSourceArea extends InArea {
+    public static class InDataSourceArea extends InArea {
 
         public InDataSourceArea(boolean all) {
             super(all);
@@ -1227,7 +1227,8 @@ public class SearchCompiler {
 
         @Override
         protected Bounds getBounds() {
-            return new Bounds(Main.main.getCurrentDataSet().getDataSourceArea().getBounds2D());
+            return Main.main.getCurrentDataSet() == null || Main.main.getCurrentDataSet().getDataSourceArea() == null
+                    ? null : new Bounds(Main.main.getCurrentDataSet().getDataSourceArea().getBounds2D());
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
index 0b1ec34..3214354 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
@@ -9,6 +9,7 @@ import java.util.Set;
 import java.util.regex.Pattern;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -418,6 +419,8 @@ public abstract class Condition {
             case "open_end":
                 // handling at org.openstreetmap.josm.gui.mappaint.mapcss.Selector.ChildOrParentSelector.MultipolygonOpenEndFinder
                 return true;
+            case "indownloadedarea":
+                return new SearchCompiler.InDataSourceArea(false).evaluate(e.osm);
             }
             return false;
         }
