JUSD borrow fee rate is less than it should be
The borrow fee rate calculation is wrong causing the protocol to take less fees than it should.\\nThe borrowFeeRate is calculated through getTRate():\\n```\\n    function getTRate() public view returns (uint256) {\\n        uint256 timeDifference = block.timestamp - uint256(lastUpdateTimestamp);\\n        return\\n            t0Rate +\\n            (borrowFeeRate * timeDifference) /\\n            JOJOConstant.SECONDS_PER_YEAR;\\n    }\\n```\\n\\n`t0Rate` is initialized as `1e18` in the test contracts:\\n```\\n    constructor(\\n        uint256 _maxReservesNum,\\n        address _insurance,\\n        address _JUSD,\\n        address _JOJODealer,\\n        uint256 _maxPerAccountBorrowAmount,\\n        uint256 _maxTotalBorrowAmount,\\n        uint256 _borrowFeeRate,\\n        address _primaryAsset\\n    ) {\\n        // // rest of code\\n        t0Rate = JOJOConstant.ONE;\\n    }\\n```\\n\\n`SECONDS_PER_YEAR` is equal to `365 days` which is 60 * 60 * 24 * 365 = 31536000:\\n```\\nlibrary JOJOConstant {\\n    uint256 public constant SECONDS_PER_YEAR = 365 days;\\n}\\n```\\n\\nAs time passes, `getTRate()` value will increase. When a user borrows JUSD the contract doesn't save the actual amount of JUSD they borrow, `tAmount`. Instead, it saves the current "value" of it, t0Amount:\\n```\\n    function _borrow(\\n        DataTypes.UserInfo storage user,\\n        bool isDepositToJOJO,\\n        address to,\\n        uint256 tAmount,\\n        address from\\n    ) internal {\\n        uint256 tRate = getTRate();\\n        //        tAmount % tRate ？ tAmount / tRate + 1 ： tAmount % tRate\\n        uint256 t0Amount = tAmount.decimalRemainder(tRate)\\n            ? tAmount.decimalDiv(tRate)\\n            : tAmount.decimalDiv(tRate) + 1;\\n        user.t0BorrowBalance += t0Amount;\\n```\\n\\nWhen you repay the JUSD, the same calculation is done again to decrease the borrowed amount. Meaning, as time passes, you have to repay more JUSD.\\nLet's say that JUSDBank was live for a year with a borrowing fee rate of 10% (1e17). `getTRate()` would then return: $1e18 + 1e17 * 31536000 / 31536000 = 1.1e18$\\nIf the user now borrows 1 JUSD we get: $1e6 * 1e18 / 1.1e18 ~= 909091$ for `t0Amount`. That's not the expected 10% decrease. Instead, it's about 9.1%.
Change formula to: `t0Amount = tAmount - tAmount.decimalMul(tRate)` where `t0Rate` is initialized with `0` instead of `1e18`.
Users are able to borrow JUSD for cheaper than expected
```\\n    function getTRate() public view returns (uint256) {\\n        uint256 timeDifference = block.timestamp - uint256(lastUpdateTimestamp);\\n        return\\n            t0Rate +\\n            (borrowFeeRate * timeDifference) /\\n            JOJOConstant.SECONDS_PER_YEAR;\\n    }\\n```\\n