diff --git a/func_adl/util_ast.py b/func_adl/util_ast.py
index 868029d..7b65cef 100644
--- a/func_adl/util_ast.py
+++ b/func_adl/util_ast.py
@@ -322,14 +322,28 @@ class _rewrite_captured_vars(ast.NodeTransformer):
     def __init__(self, cv: inspect.ClosureVars):
         self._lookup_dict: Dict[str, Any] = dict(cv.nonlocals)
         self._lookup_dict.update(cv.globals)
+        self._ignore_stack = []
 
     def visit_Name(self, node: ast.Name) -> Any:
+        if self.is_arg(node.id):
+            return node
+
         if node.id in self._lookup_dict:
             v = self._lookup_dict[node.id]
             if not callable(v):
                 return as_literal(self._lookup_dict[node.id])
         return node
 
+    def visit_Lambda(self, node: ast.Lambda) -> Any:
+        self._ignore_stack.append([a.arg for a in node.args.args])
+        v = super().generic_visit(node)
+        self._ignore_stack.pop()
+        return v
+
+    def is_arg(self, a_name: str) -> bool:
+        "If the arg is on the stack, then return true"
+        return any([a == a_name for frames in self._ignore_stack for a in frames])
+
 
 def global_getclosurevars(f: Callable) -> inspect.ClosureVars:
     """Grab the closure over all passed function. Add all known global

diff --git a/tests/test_util_ast.py b/tests/test_util_ast.py
index e255a40..5d2284a 100644
--- a/tests/test_util_ast.py
+++ b/tests/test_util_ast.py
@@ -279,9 +279,23 @@ def test_parse_lambda_capture():
     assert ast.dump(r) == ast.dump(r_true)
 
 
+def test_parse_lambda_capture_ignore_local():
+    x = 30  # NOQA type: ignore
+    r = parse_as_ast(lambda x: x > 20)
+    r_true = parse_as_ast(lambda y: y > 20)
+    assert ast.dump(r) == ast.dump(r_true).replace("'y'", "'x'")
+
+
 g_cut_value = 30
 
 
+def test_parse_lambda_capture_ignore_global():
+    x = 30  # NOQA type: ignore
+    r = parse_as_ast(lambda g_cut_value: g_cut_value > 20)
+    r_true = parse_as_ast(lambda y: y > 20)
+    assert ast.dump(r) == ast.dump(r_true).replace("'y'", "'g_cut_value'")
+
+
 def test_parse_lambda_capture_nested_global():
     r = parse_as_ast(lambda x: (lambda y: y > g_cut_value)(x))
     r_true = parse_as_ast(lambda x: (lambda y: y > 30)(x))

Lambda closure prefers global over local arg name
In the following code:

```python
sys_muon = (calib_tools.query_sys_error(ds, 'MUON_ID__1up')
           .Select(lambda e: e.Muons())
           .Select(lambda l_muons: [m for m in l_muons if m.pt() > 30000.0])
           .Select(lambda l_muons: {
               'pt': [m.pt() / 1000.0 for m in l_muons],
               'eta': [m.eta() for m in l_muons],
               'phi': [m.phi() for m in l_muons],
           })
           .AsAwkwardArray()
           .value())
```

It will pick up `l_muons` if available in local variables or global space rather than the `lambda` argument. Totally violates how we think of python!
tests/test_util_ast.py::test_parse_lambda_capture_ignore_global
tests/test_util_ast.py::test_as_ast_integer tests/test_util_ast.py::test_as_ast_string tests/test_util_ast.py::test_as_ast_string_var tests/test_util_ast.py::test_as_ast_list tests/test_util_ast.py::test_function_call_simple tests/test_util_ast.py::test_identity_is tests/test_util_ast.py::test_identity_isnot_body tests/test_util_ast.py::test_identity_isnot_args tests/test_util_ast.py::test_identity_isnot_body_var tests/test_util_ast.py::test_lambda_test_expression tests/test_util_ast.py::test_lambda_assure_expression tests/test_util_ast.py::test_lambda_assure_lambda tests/test_util_ast.py::test_lambda_args tests/test_util_ast.py::test_lambda_simple_ast_expr tests/test_util_ast.py::test_lambda_build_single_arg tests/test_util_ast.py::test_lambda_build_list_arg tests/test_util_ast.py::test_lambda_build_proper tests/test_util_ast.py::test_call_wrap_list_arg tests/test_util_ast.py::test_call_wrap_single_arg tests/test_util_ast.py::test_lambda_test_lambda_module tests/test_util_ast.py::test_lambda_test_raw_lambda tests/test_util_ast.py::test_lambda_is_true_yes tests/test_util_ast.py::test_lambda_is_true_no tests/test_util_ast.py::test_lambda_is_true_expression tests/test_util_ast.py::test_lambda_is_true_non_lambda tests/test_util_ast.py::test_lambda_replace_simple_expression tests/test_util_ast.py::test_rewrite_oneliner tests/test_util_ast.py::test_rewrite_twoliner tests/test_util_ast.py::test_rewrite_noret tests/test_util_ast.py::test_parse_as_ast_lambda tests/test_util_ast.py::test_parse_as_str tests/test_util_ast.py::test_parse_as_callable_simple tests/test_util_ast.py::test_parse_nested_lambda tests/test_util_ast.py::test_parse_lambda_capture tests/test_util_ast.py::test_parse_lambda_capture_ignore_local tests/test_util_ast.py::test_parse_lambda_capture_nested_global tests/test_util_ast.py::test_parse_lambda_capture_nested_local tests/test_util_ast.py::test_parse_simple_func tests/test_util_ast.py::test_parse_global_simple_func tests/test_util_ast.py::test_parse_global_capture tests/test_util_ast.py::test_unknown_function tests/test_util_ast.py::test_known_local_function tests/test_util_ast.py::test_known_global_function tests/test_util_ast.py::test_parse_continues tests/test_util_ast.py::test_parse_continues_accross_lines tests/test_util_ast.py::test_decorator_parse tests/test_util_ast.py::test_indent_parse tests/test_util_ast.py::test_two_deep_parse tests/test_util_ast.py::test_parse_continues_one_line tests/test_util_ast.py::test_parse_metadata_there tests/test_util_ast.py::test_realign_no_indent tests/test_util_ast.py::test_realign_indent_sp tests/test_util_ast.py::test_realign_indent_tab tests/test_util_ast.py::test_realign_indent_2lines tests/test_util_ast.py::test_realign_indent_2lines_uneven