I've always accepted extending contract at last day.
Signing at second day on the next season is awkward as player don't recover condition when out of contract. Not being able to play on first cup game is also a risky move.
It is a fundamental flaw in the game, new contract should start AFTER the previous expired, not immediate. The only reason for the current system is that it is simple to code, thus won't generate so much stress on the servers.