(change:minor) When setting a new cap, if the new value exceed the max value set it as 0. When getting the current value of cap, return the max value instead of zero