diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp
index f6241e14d59d7982c780908617efa7dacc62706f..cf528ad26f6c0734a29daa5fe2237c8419cc810c 100644
--- a/Geo/GModelIO_OCC.cpp
+++ b/Geo/GModelIO_OCC.cpp
@@ -583,6 +583,7 @@ void OCC_Internals::unbindWithoutChecks(TopoDS_Shape shape)
       int tag = _solidTag.Find(solid);
       _solidTag.UnBind(solid);
       _tagSolid.UnBind(tag);
+      _toRemove.insert(std::make_pair(3, tag));
     }
   }
   for(exp0.Init(shape, TopAbs_SHELL); exp0.More(); exp0.Next()) {
@@ -591,6 +592,7 @@ void OCC_Internals::unbindWithoutChecks(TopoDS_Shape shape)
       int tag = _shellTag.Find(shell);
       _shellTag.UnBind(shell);
       _tagShell.UnBind(tag);
+      _toRemove.insert(std::make_pair(-2, tag));
     }
   }
   for(exp0.Init(shape, TopAbs_FACE); exp0.More(); exp0.Next()) {
@@ -599,6 +601,7 @@ void OCC_Internals::unbindWithoutChecks(TopoDS_Shape shape)
       int tag = _faceTag.Find(face);
       _faceTag.UnBind(face);
       _tagFace.UnBind(tag);
+      _toRemove.insert(std::make_pair(2, tag));
     }
   }
   for(exp0.Init(shape, TopAbs_WIRE); exp0.More(); exp0.Next()) {
@@ -607,6 +610,7 @@ void OCC_Internals::unbindWithoutChecks(TopoDS_Shape shape)
       int tag = _wireTag.Find(wire);
       _wireTag.UnBind(wire);
       _tagWire.UnBind(tag);
+      _toRemove.insert(std::make_pair(-1, tag));
     }
   }
   for(exp0.Init(shape, TopAbs_EDGE); exp0.More(); exp0.Next()) {
@@ -615,6 +619,7 @@ void OCC_Internals::unbindWithoutChecks(TopoDS_Shape shape)
       int tag = _edgeTag.Find(edge);
       _edgeTag.UnBind(edge);
       _tagEdge.UnBind(tag);
+      _toRemove.insert(std::make_pair(1, tag));
     }
   }
   for(exp0.Init(shape, TopAbs_VERTEX); exp0.More(); exp0.Next()) {
@@ -623,6 +628,7 @@ void OCC_Internals::unbindWithoutChecks(TopoDS_Shape shape)
       int tag = _vertexTag.Find(vertex);
       _vertexTag.UnBind(vertex);
       _tagVertex.UnBind(tag);
+      _toRemove.insert(std::make_pair(0, tag));
     }
   }
 }