If `data` is large, then un-necessarily computing these things is an additional cost. Maybe it's okay to do it explicitly each time? It's only a few more lines of code, and the dependencies are clear. Another possibility is to just make it so that each function has parameters `min_`, `max_`, but then you just end up complicating the functions that don't need them.

When I said "usage" that would go where you now call autobinning, and you can happily round the number there as the first thing.