Juse in case the sense of Rod's reply was not completely clear: the answer is that it is supposed to be 3, not 4, so the implementations were correct. PROGV always does a "special-bind" operation, regardless of what's going on with declarations. The reference to "a" is a lexical reference because there are no declarations making it a dynamic reference.