TL;DR: I think you may want to use BrepFace.IsOrientationReversed
(see http://developer.rhino3d.com/api/RhinoCommonWin/html/P_Rhino_Geometry_BrepFace_OrientationIsReversed.htm
The situation with normals and polysurfaces is a bit complex, but I’ll try to explain. A surface has one normal direction, which is defined as the vector product of the tangents in U- and V-direction. Therefore the normal is determined by the direction of U and V (which can be changed by the Dir
command by the way).
But when a surface becomes part of a Brep (polysurface, or trimmed) the normal of a BrepFace can be flipped independently of the underlying surface using the property mentioned above.
If you think about it, it is quite logical to have this, because it is much easier to do this, than to change the surface directions (because that also means you need to change the trim definitions!).
You can see this IsOrientationReversed
also if you look carefully to a surface whose normal has been flipped: it has a purple line opposite of the direction arrow. See also the documentation of the Dir command, where this is also explained.
The final kicker is this: even untrimmed surfaces are Breps in the Rhino document. So you can flip the orientation of a surface but leave its directions intact.