anchor.diff:              else
                   Bezier3Seg(p0, p1, p2, p3) |> Some
   
  -    let private createArc (p0 : V2d) (p1 : V2d) (alpha0 : float) (dAlpha : float) (ellipse : Ellipse2d) =
  +    let private createArc (force : bool) (p0 : V2d) (p1 : V2d) (alpha0 : float) (dAlpha : float) (ellipse : Ellipse2d) =
           let newEllipse = createEllipse ellipse.Center ellipse.Axis0 ellipse.Axis1
           let a0 = newEllipse.GetAlpha p0
           let da =
  
positive.code:             else dAlpha
  
          let pm = newEllipse.GetPoint(a0 + da / 2.0)
          if not (Fun.ApproximateEquals(p0, p1, epsilon)) && Fun.IsTiny(pm.PosLeftOfLineValue(p0, p1), epsilon) then
              tryLine p0 p1
          else
              ArcSeg(p0, p1, a0, da, newEllipse) |> Some
  
negative.code:         else
              let p0 = ellipse.GetPoint alpha0
              let p1 = ellipse.GetPoint (alpha0 + dAlpha)
              createArc false p0 p1 alpha0 dAlpha ellipse
              
      /// creates an arc using the an angle alpha0 and a (signed) dAlpha
      let arc (alpha0 : float) (dAlpha : float) (ellipse : Ellipse2d) =
  