It’s not a bug — it’s just how Liquid handles numbers. When you write 3 | divided_by: 5, Liquid does integer math, so the result is 0. Then 0 | ceil is still 0.
To fix it, make one of the numbers a decimal:
{% assign max_avail_columns = 3.0 | divided_by: 5 | ceil %}
Now it does 3.0 ÷ 5 = 0.6, and ceil turns that into 1.
