#include <ShapeBuild_Edge.hxx>
 #include <IGESToBRep.hxx>
 #include <IGESToBRep_TopoCurve.hxx>
+#include <ShapeFix_Wire.hxx>
 
 //=======================================================================
 //function : IGESToBRep_IGESBoundary
 //           Orientation of each edge is not changed
 //=======================================================================
 
- void IGESToBRep_IGESBoundary::ReverseCurves3d (const Handle(ShapeExtend_WireData)& sewd)
+void IGESToBRep_IGESBoundary::ReverseCurves3d (const Handle(ShapeExtend_WireData)& sewd)
 {
   sewd->Reverse();
+  BRep_Builder B;
+  TopoDS_Wire W;
+  B.MakeWire(W);
   for (Standard_Integer i = 1; i <= sewd->NbEdges(); i++) {
     TopoDS_Edge oldedge = sewd->Edge (i), newedge;
     TopLoc_Location L;
                                Max (curve->ReversedParameter(curve->LastParameter()), curve->ReversedParameter (p2)),
                                Min (curve->ReversedParameter(curve->FirstParameter()),  curve->ReversedParameter (p1)));
     newedge.Orientation(TopAbs::Reverse (oldedge.Orientation()));
-    sewd->Set (newedge, i);
+    //sewd->Set (newedge, i);
+    B.Add(W,newedge);
   }
+  Handle(ShapeFix_Wire) sfw = new ShapeFix_Wire();
+  sfw->Load(W);
+  sfw->FixConnected();
+  sewd->Init(sfw->Wire());
 }
 
 //=======================================================================