if (val >= beta) return beta;
if a condition is met that causes a return from a method, then of course the rest of the method is cut off. It matters not that one is in a loop or a plain sequence of statements.
I guess I did miss the point on beta also, The engine wasn't missing out on a beneficial promo, a correctly played game would never have progressed to that point anyway. Unfortunately that doesn't excuse the brain cramp.
heavy sigh