Add explanation in comment. Add {factor} = {floor} * ({base} + 1) / 2 parameter for better centering of buckets.
Add caching of heavy r/o functions