diff --git a/src/AIS/AIS_Selection.cxx b/src/AIS/AIS_Selection.cxx
index b0acb5ffa1..4edccdcb5e 100644
--- a/src/AIS/AIS_Selection.cxx
+++ b/src/AIS/AIS_Selection.cxx
@@ -72,8 +72,13 @@ AIS_SelectStatus AIS_Selection::Select (const Handle(SelectMgr_EntityOwner)& the
   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);
@@ -81,11 +86,6 @@ AIS_SelectStatus AIS_Selection::Select (const Handle(SelectMgr_EntityOwner)& the
     return AIS_SS_Added;
   }
 
-  if (!toSelect && !wasSelected)
-  {
-    return AIS_SS_NotDone;
-  }
-
   AIS_NListOfEntityOwner::Iterator aListIter = myResultMap.Find (theOwner);
   if (myIterator == aListIter)
   {