Inconsistent Offset Direction on Vertical Surface

I’m trying to offset a group of circles mapped to a surface. The offset works fine on any complex surface unless it’s perfectly vertical. On a vertical surface, or along a vertical isocurve of a surface, the offset direction becomes inconsistent and seemingly random. How can I standardize the offset direction?

In the attached sample, I created a surface that is vertical on the sides and flattened out in the middle. In the center the offset behaves as expected. On the left and right edges, the inconsistent direction is visible.

Offset (8.5 KB)

Offset needs a plane input for consistent offset direction:
Offset (7.1 KB)

Excellent, thank you!