         if abs(angle) > 0.25 * .pi {
             
             let center = self.eval(0.5 * (s + t))
-            let arc = BezierArc(angle).map { a * $0 * SDTransform.rotate(d0.phase - 0.5 * .pi) + center }
+            let arc = BezierArc(angle).map { a * $0 * SDTransform.rotate(angle < 0 ? d0.phase + 0.5 * .pi : d0.phase - 0.5 * .pi) + center }
             var s = s
             
             for i in 0..<arc.count / 3 {

            let center = self.eval(0.5 * (s + t))
            guard let a = _offset_point(0.5 * (s + t))?.distance(to: center) else { return }
            
            let arc = BezierArc(angle).map { a * $0 * SDTransform.rotate(d0.phase - 0.5 * .pi) + center }
            var s = s
            
            for i in 0..<arc.count / 3 {

            }
        }
    }
    
    @inlinable
    public func offset(_ a0: Double, _ a1: Double) -> [(ClosedRange<Double>, CubicBezier<Point>)] {
        var result: [(ClosedRange<Double>, CubicBezier<Point>)] = []
        self.offset(a0, a1) { result.append(($0, $1)) }
        return result
    }
}
