I have just thought of a differnet tack you may like to try.. it is going back on your word a little but, I think, at 9 he should be old enough to understand the conversation and see the responsibility.
SO, you usually let him out till, say, 6pm? Tell him that, because of his time keeping troubles you are now going to test ou just how good he can be at getting home on time, therefore, instead of grounding him you are going to let him go out and play with the others but that he has to be back 1/2hr or whatever earlier than normal (fix an apporpriate amount of time depending on how long he is usually out for). Then if he makes it back on time you will elt him go back out to play with his usual curfew, if he doesn't he stays in and has his grounding the next night/
My thinking is this, he is clearly upset and it appears he has not been naughty as such, just pushing the boundaries too far. If you give him the opportunity to prove himself to you he should feel a sense of pride in doing that, he also stands to gain some respect and responsibility from you. You are not actually giving him no punishment, you are postponing the actual punishment to allow him the opportunity to show he can be trusted, if he does it then he will now you mean business but that you are fair, if he does not he will know you mean business as he will still have the punishment... I am waffling..
anyway, just a suggestion that I thought could work - alongside the alarm watch which I think is key in these situations!
Custardo, my Granddad used to say "be back before the lights come on" how on earth are you supposed to do that then? I never quite figured it out and was always late/grounded