The fix was to split llocal() into two procedures, one that creates a variable scope and one that doesn't.
LOCAL uses the one that creates a new variable scope (no change).
evaluator() uses the one that doesn't (the fix).
This change diverges from UCBLogo's implementation, which also doesn't have this bug.
Therefore, there's at least one other way fix it. I'm not confident that I picked the right fix.