There are plenty of good posts like these about the accuracy of numbers in Revit.
Without repeating the content of those posts, I will provide this reminder that even if you think a number will be 1, 0, -1, etc. it may be just slightly larger or smaller. And when you are debugging you might look at the value below for pf.Normal and think the Z value is exactly 0 and the surface is pointing exactly to the side.
But that would be a mistake, because the actual value of the Z value is not 0, as shown above.