claimRewards() If a rewards is too small, it may block other epochs
When `claimRewards()`, if some `rewards` is too small after being round down to 0 If `payoutToken` does not support transferring 0, it will block the subsequent epochs\\nThe current formula for calculating rewards per cycle is as follows.\\n```\\n    function _claimEpochRewards(uint48 epoch_) internal returns (uint256) {\\n// rest of code\\n      uint256 rewards = ((rewardsPerTokenEnd - userRewardsClaimed) * stakeBalance[msg.sender]) /\\n            10 ** stakedTokenDecimals;\\n        // Mint the option token on the teller\\n        // This transfers the reward amount of payout tokens to the option teller in exchange for the amount of option tokens\\n        payoutToken.approve(address(optionTeller), rewards);\\n        optionTeller.create(optionToken, rewards);\\n```\\n\\nCalculate `rewards` formula : uint256 `rewards` = ((rewardsPerTokenEnd - userRewardsClaimed) * stakeBalance[msg.sender]) /10 ** stakedTokenDecimals;\\nWhen `rewardsPerTokenEnd` is very close to `userRewardsClaimed`, `rewards` is likely to be round downs to 0 Some tokens do not support transfer(amount=0) This will revert and lead to can't claims
```\\n    function _claimEpochRewards(uint48 epoch_) internal returns (uint256) {\\n// rest of code..\\n\\n        uint256 rewards = ((rewardsPerTokenEnd - userRewardsClaimed) * stakeBalance[msg.sender]) /\\n            10 ** stakedTokenDecimals;\\n+      if (rewards == 0 ) return 0;\\n        // Mint the option token on the teller\\n        // This transfers the reward amount of payout tokens to the option teller in exchange for the amount of option tokens\\n        payoutToken.approve(address(optionTeller), rewards);\\n        optionTeller.create(optionToken, rewards);\\n```\\n
Stuck `claimRewards()` when the rewards of an epoch is 0
```\\n    function _claimEpochRewards(uint48 epoch_) internal returns (uint256) {\\n// rest of code\\n      uint256 rewards = ((rewardsPerTokenEnd - userRewardsClaimed) * stakeBalance[msg.sender]) /\\n            10 ** stakedTokenDecimals;\\n        // Mint the option token on the teller\\n        // This transfers the reward amount of payout tokens to the option teller in exchange for the amount of option tokens\\n        payoutToken.approve(address(optionTeller), rewards);\\n        optionTeller.create(optionToken, rewards);\\n```\\n