switch to using remaining() instead of using direct access to fill_