The logic in _calculateClaim() can leave some tokens locked and waste gas
The function `_calculateClaim()` is responsible for the calculations of the amount of emissions a specific veSatin is entitled to claim. To do so, this code is executed in a loop for each week from the current timestamp to the last claim (code with mitigation from TRST-H-1):\\n```\\n    if ((lockEndTime - weekCursor) > (minLockDurationForReward)) {\\n             toDistribute +=\\n         (balanceOf * tokensPerWeek[weekCursor]) / veSupply[weekCursor];\\n      weekCursor += WEEK;\\n    }\\n```\\n\\nWhen the if condition is not met two things happen:\\nAn amount of emissions that was supposed to be distributed ((balanceOf * tokensPerWeek[weekCursor]) / veSupply[weekCursor])) is skipped, meaning it will stay locked in the contract.\\nThe function `_calculateClaim()` will loop for the maximum number of times (50), because weekCursor is not increased, wasting users' gas.
When the if condition is not met burn the tokens that were supposed to be distributed and exit the loop. Since the non-distributed tokens would stay locked it's not strictly necessary to burn them.
```\\n    if ((lockEndTime - weekCursor) > (minLockDurationForReward)) {\\n             toDistribute +=\\n         (balanceOf * tokensPerWeek[weekCursor]) / veSupply[weekCursor];\\n      weekCursor += WEEK;\\n    }\\n```\\n