BRepFill_PipeShell builds broken segments

Hi all,

I'm trying to build a pipe with consecutive line segments as the spine, and a circle as the profile with BRepFill_PipeShell . The transition mode is BRepFill_Right . Following is the code snippet

        std::vector<gp_Pnt> pnts = {
        {-11.632049,994.694902,48.628134},
        {10.065155,966.861115,-9.835286},
        {53.461328,911.191278,-141.164126},
        {75.160044,883.355551,-211.971287},
        {96.859012,855.519500,-284.834769},
        {118.558107,827.683289,-358.725443},
        {140.257201,799.847077,-432.614179},
        {161.956168,772.011028,-505.471848},
        {183.654883,744.175302,-576.269319},
        {205.353220,716.340062,-643.977464},
        {227.051052,688.505470,-707.567154},
        {248.748253,660.671686,-766.009258},
        {270.444698,632.838874,-818.274647},
        {292.140259,605.007194,-863.334191},
        {313.834812,577.176808,-900.158762},
        {335.528229,549.347879,-927.719228},
        {357.220385,521.520567,-944.986462},
        {378.911154,493.695035,-950.931334},
        {400.600453,465.871390,-944.873493},
        {422.288365,438.049523,-927.504268},
        {443.975017,410.229272,-899.852141},
        {465.660536,382.410475,-862.945597},
        {487.345047,354.592972,-817.813120},
        {509.028675,326.776600,-765.483193},
        {530.711548,298.961197,-706.984299},
        {552.393791,271.146602,-643.344924},
        {574.075530,243.332654,-575.593550},
        {595.756892,215.519191,-504.758662},
        {617.438001,187.706050,-431.868742},
        {639.118985,159.893071,-357.952276},
        {660.799969,132.080092,-284.037746},
        {682.481079,104.266950,-211.153636},
        {704.162442,76.453485,-140.328431},
        {725.844183,48.639535,-72.590614},
        {747.526428,20.824937,-8.968668},
        {769.209303,-6.990468,49.508922}
      };
      gp_Dir dir = gp_Vec(pnts[0], pnts[1]);

      // prepare profile
      gp_Ax2 circleAx(pnts[0], dir);
      BRep_Builder B;
      Handle(Geom_Circle) circle = new Geom_Circle(circleAx, 4.8);
      TopoDS_Wire profile;
      B.MakeWire(profile);
      B.Add(profile, BRepBuilderAPI_MakeEdge(circle));

      // prepare spine
      TopoDS_Wire spine;
      B.MakeWire(spine);
      for(int i = 1; i < pnts.size(); i++){
        Handle(Geom_Curve) seg = GC_MakeSegment(pnts[i-1],pnts[i]).Value();
        B.Add(spine, BRepBuilderAPI_MakeEdge(seg));
      }
      ShapeFix_Wire aWireFix(spine, TopoDS_Face(), 1e-2);
      aWireFix.FixConnected();
      spine = aWireFix.Wire();

      // prepare support
      gp_Dir supportPlaneY(0,0,1);
      gp_Dir supportPlaneNormal = dir ^ supportPlaneY;
      gp_Dir supportPlaneX = supportPlaneY ^ supportPlaneNormal;
      Handle(Geom_Surface) support = new Geom_Plane(pnts[0], supportPlaneNormal);
      support = new Geom_RectangularTrimmedSurface(support, -10000., 10000., -10000., 10000.);
      TopoDS_Face supportFace = BRepBuilderAPI_MakeFace(support, 0.01);

      // build pipe
      BRepFill_PipeShell aPipeMaker(spine);
      aPipeMaker.Set(true);
      //aPipeMaker.Set(supportFace);
      aPipeMaker.SetTransition(BRepFill_Right);
      aPipeMaker.Add(profile);

      aPipeMaker.Build();
      aPipeMaker.MakeSolid();
      auto pipeShape = aPipeMaker.Shape();

I have tried different modes(isFrenet = true/false and planar spine support), but some segements of the pipe is broken(see the attachments). I'm current running on OCCT7.8.1 and I have also tried 8.0.0rc2, both produce broken segement(s).

Any suggestions on this?

Best regards,

Andy