The clock on the client is not the official clock. The Live server keeps the official time and updates the client clocks when moves are received and the game ends.
There are different things that can happen. Short disconnects, lag between the client and the Live server are the main ones. Without a link to the exact game, it is kind of hard to give much more information than that. I see one recent game where you lost on time and your opponent had 0.1 seconds; but in that one you only had 0.9 left.
I just had a game where the opponent won on time, which was not accurate, I made the move, the player had 1 tenth of a second left, their time hit zero, I had about 3 seconds, dropped my move, and when their move come up I get told they won on time and they ended back up with 1 tenth of a second, and it had nothing to do with my connection as it showed I had excellent connection, so how does one get time like that?