diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java
index 1397774..9313f34 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java
@@ -30,6 +30,7 @@
 import org.onlab.packet.VlanId;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.Device;
+import org.onosproject.net.Host;
 import org.onosproject.net.flowobjective.DefaultObjectiveContext;
 import org.onosproject.net.flowobjective.Objective;
 import org.onosproject.net.flowobjective.ObjectiveContext;
@@ -1157,8 +1158,7 @@
                                    VlanId innerVlan, boolean install) {
         // We should trigger the removal of double tagged rules only when removing
         // the filtering objective and no other hosts are connected to the same device port.
-        boolean cleanupDoubleTaggedRules = srManager.hostService
-                .getConnectedHosts(new ConnectPoint(deviceId, portNum)).size() == 0 && !install;
+        boolean cleanupDoubleTaggedRules = !anyDoubleTaggedHost(deviceId, portNum) && !install;
         FilteringObjective.Builder fob = buildDoubleTaggedFilteringObj(deviceId, portNum,
                                                                        outerVlan, innerVlan,
                                                                        cleanupDoubleTaggedRules);
@@ -1180,6 +1180,23 @@
         }
     }
 
+    /**
+     * Checks if there is any double tagged host attached to given location.
+     * This method will match on the effective location of a host.
+     * That is, it will match on auxLocations when auxLocations is not null. Otherwise, it will match on locations.
+     *
+     * @param deviceId device ID
+     * @param portNum port number
+     * @return true if there is any host attached to given location.
+     */
+    private boolean anyDoubleTaggedHost(DeviceId deviceId, PortNumber portNum) {
+        ConnectPoint cp = new ConnectPoint(deviceId, portNum);
+        Set<Host> connectedHosts = srManager.hostService.getConnectedHosts(cp, false);
+        Set<Host> auxConnectedHosts = srManager.hostService.getConnectedHosts(cp, true);
+        return !auxConnectedHosts.isEmpty() ||
+                connectedHosts.stream().anyMatch(host -> host.auxLocations() == null);
+    }
+
     private FilteringObjective.Builder buildDoubleTaggedFilteringObj(DeviceId deviceId, PortNumber portNum,
                                                                      VlanId outerVlan, VlanId innerVlan,
                                                                      boolean cleanupDoubleTaggedRules) {
