From what I understand, setting a new binding on a dynamic var affects all functions called within that binding, and all functions called from those functions.
This is caused by lazyness - map returns a lazy sequence which is defined inside the binding but is evaluated outside. You need to force the evaluation from inside: