Curiously when an IGES file is read with IGESControl_Reader, you get more edges than expected, it is as if they were duplicated (they surely are).
What I do is to read the file, iterate over the retrieved faces, and sew them. So this way there is no problem of duplicated edges :
int status = reader.ReadFile (some_path);
TopoDS_Shape one_shape = reader.OneShape ();
BRepOffsetAPI_Sewing face_sewer (0.001);
TopExp_Explorer explorer (one_shape, TopAbs_FACE);
while (explorer.More ())
face_sewer.Add (explorer.Current ());
return face_sewer.SewedShape ();
Everybody agrees with this?