The issue with this approach is it will only emit the first form matching the criterion, but *all* matching forms are needed.  You should either put the yield statement inside the loop or have the calculator watch changes to forms rather than cases.