Add more comments; prevent negative rates

* add more comments as funtion headers
* add a floor of 0.0 to prevent negative rates