Not sure exactly what goes wrong here, but I guess it's caused by the scope variables being primitives and not objects; which for technical reasons behaves unexpectedly.
In general it's better to use an object to store scope values instead of using variables directly. So you should put your scope variables in an object like this:
$scope.vals = {};
$scope.vals.rateValue = 0;
$scope.vals.rateMax = 10;
//etc.
// Functions doesn't need to be in an object:
$scope.addToLib = function( item ) { //...
and
<h4>
{{vals.rateValue}} / {{vals.rateMax}}
</h4>