```\n // 2. Get the time passed since the last interest accrual\n        uint _timeDelta = block.timestamp - _lastAccrueInterestTime;\n        \n        // 3. If the time passed is 0, return the current values\n        if(_timeDelta == 0) return (_currentTotalSupply, _accruedFeeShares, _currentCollateralRatioMantissa, _currentTotalDebt);\n        \n        // 4. Calculate the supplied value\n        uint _supplied = _totalDebt + _loanTokenBalance;\n        // 5. Calculate the utilization\n        uint _util = getUtilizationMantissa(_totalDebt, _supplied);\n\n        // 6. Calculate the collateral ratio\n        _currentCollateralRatioMantissa = getCollateralRatioMantissa(\n            _util,\n            _lastAccrueInterestTime,\n            block.timestamp,\n            _lastCollateralRatioMantissa,\n            COLLATERAL_RATIO_FALL_DURATION,\n            COLLATERAL_RATIO_RECOVERY_DURATION,\n            MAX_COLLATERAL_RATIO_MANTISSA,\n            SURGE_MANTISSA\n        );\n\n        // 7. If there is no debt, return the current values\n        if(_totalDebt == 0) return (_currentTotalSupply, _accruedFeeShares, _currentCollateralRatioMantissa, _currentTotalDebt);\n\n        // 8. Calculate the borrow rate\n        uint _borrowRate = getBorrowRateMantissa(_util, SURGE_MANTISSA, MIN_RATE, SURGE_RATE, MAX_RATE);\n        // 9. Calculate the interest\n        uint _interest = _totalDebt * _borrowRate * _timeDelta / (365 days * 1e18); // does the optimizer optimize this? or should it be a constant?\n        // 10. Update the total debt\n        _currentTotalDebt += _interest;\n```\n