Not sure but could you use the dot product to just flip the ones in the wrong direction?
Drop down a wrangle, run over vertices:
float dist = dot(@N,{0,1,0});
if (dist > chf('val'))
{
@N = -@N;
}
Use the float channel slider to get the value that caputures them? Might not work as it might grab ones you dont want to flip, you could group just those around the problem area and then run it just over those points, looks like it might be okay