diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp
index 5ba119fe0154c508e015cee529148e6add83f468..301f6a9afb0980d1b00838a81a7b00a28cceb4ed 100644
--- a/Geo/OCCFace.cpp
+++ b/Geo/OCCFace.cpp
@@ -46,7 +46,14 @@ OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num, TopTools_IndexedMapOfShape
         TopoDS_Edge edge = TopoDS::Edge(exp3.Current());
         int index = emap.FindIndex(edge);
         GEdge *e = m->getEdgeByTag(index);
-        if(e){
+        if(!e){
+          Msg::Error("Unknown edge %d in face %d", index, num);
+        }
+        else if(std::find(embedded_edges.begin(), embedded_edges.end(), e) != 
+                embedded_edges.end()){
+          Msg::Debug("OCC Face %d - Skipping embedded edge in loop", num);
+        }
+        else{
           l_wire.push_back(e);
           Msg::Debug("Edge %d ori %d", e->tag(), edge.Orientation());
           e->addFace(this);
@@ -55,9 +62,6 @@ OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num, TopTools_IndexedMapOfShape
             occe->setTrimmed(this);
           }
         }
-        else{
-          Msg::Error("Unknown edge %d in face %d", index, num);
-        }
       }      
 
       GEdgeLoop el(l_wire);