diff --git a/holder.py b/holder.py index 5a79ac3..a093b8f 100644 --- a/holder.py +++ b/holder.py @@ -305,10 +305,11 @@ def _filter_params(params: dict) -> dict: continue p = known[k] if p.kind == "number": - v = float(v) if p.step and p.step != int(p.step) else int(float(v)) - # keep ints for integer-step params - if isinstance(p.default, int) and float(v).is_integer(): - v = int(v) + # Always coerce through float — earlier logic short-circuited to + # int(float(v)) when step was None (most auto-extracted params), + # truncating decimals like box_clearance=0.2 → 0. + fv = float(v) + v = int(fv) if fv.is_integer() else fv elif p.kind == "bool": v = bool(v) elif p.kind == "select":