diff --git a/src/AIS/AIS_Selection.cxx b/src/AIS/AIS_Selection.cxx
index 874ba363bb..039f3004ca 100644
--- a/src/AIS/AIS_Selection.cxx
+++ b/src/AIS/AIS_Selection.cxx
@@ -65,8 +65,11 @@ AIS_SelectStatus AIS_Selection::Select(const Handle(SelectMgr_EntityOwner)& theO
   const Standard_Boolean wasSelected = theOwner->IsSelected();
   const Standard_Boolean toSelect    = theOwner->Select(theSelScheme, isDetected);
 
-  if (toSelect && !wasSelected)
+  if (!wasSelected || !myResultMap.IsBound(theOwner))
   {
+    if (!toSelect)
+      return AIS_SS_NotDone;
+
     AIS_NListOfEntityOwner::Iterator aListIter;
     myresult.Append(theOwner, aListIter);
     myResultMap.Bind(theOwner, aListIter);
@@ -74,11 +77,6 @@ AIS_SelectStatus AIS_Selection::Select(const Handle(SelectMgr_EntityOwner)& theO
     return AIS_SS_Added;
   }
 
-  if (!toSelect && !wasSelected)
-  {
-    return AIS_SS_NotDone;
-  }
-
   AIS_NListOfEntityOwner::Iterator aListIter = myResultMap.Find(theOwner);
   if (myIterator == aListIter)
   {