@pepperbenzMcSpicy Rewards aren’t payed or calculated at the end of an epoch, but rather when each specific allocation is closed.
If you undelegate and immediately have the funds available to redelegate your GRT could be potentially be in 2 (or more, depending on the circumstances) allocations at the same time, if the indexer from whom you undelegated still has his allocations up, and the new indexer that you will delegate to will open his allocation just after your delegation.
This means that your GRT is being counted twice on the reward calculation, which shouldn’t happen since you are basically being counted twice for reward payment and generation (diluting everyone else’s rewards, and getting a bigger share of them than you should be able to).
Front-running is also an important issue, since you would be able to jump from indexer to indexer just before they close big allocations, and get all the rewards that you would get if you’ve been delegating to them for the whole allocation period, while diluting everyone else’s rewards.
The system might not be perfect, but the reward distribution logic can’t be tied to epochs ending, since the calculations needed to distribute all rewards to everyone would be extremely expensive (and also should be triggered by someone externally, who would have to pay for all the gas fees of this extremely heavy computational logic). I’m guessing that’s the reason the system is designed the way it is (although if anyone knows better, feel free to correct me)