nice
Losing move that allows zugzwang in the endgame

I agree that it is fascinating. The other thing is this. If we were both to keep our single pawn, I could still lose if I make a single wrong pawn move on the kingside. So with perfect play from both I would win, but it was pretty impossible to be sure of that during the game, even if it was daily game, considering my level of play.
That being said, I am still not completely sure which one of his moves is the losing one.
https://www.chess.com/daily/game/276014424
I have a question considering this game. The game itself wasn't very interesting. What was interesting was the endgame. On depth 10 the game is equal pretty much all game. There were some shifts where white (my opponent) was better but that was it. I loaded the game in my PGN chessbook and let it analyse it 30 seconds per move. It shows that I had a chance for zugzwang. On move 40 I blundered it with 40. ...b4 and the game was a dead draw after that. That much is clear. I know the winning idea. It is:
40. ...Kc6 41. Kc3 Kb7 42. Kb4 Ka6 and both kings defends their own pawn on the queenside. After that both of us would play pawn moves on the kingside and in the end my opponent would be in zugzwang. I saw this idea but wasn't sure who would be in zugzwang so I decided to play it safe with b6 and draw, as I just wasn't sure in the outcome.
My question is this: Exactly when did my opponent made a mistake to allow this? My pgn chessbook didn't find the exact losing move, or at least I can't understand it.
If someone is up to the task, I would like an assistance with this one.
Edit: My best guess, but I am not completely sure is 33. f3 is the losing move. That is when he made the last pawn move on the kingside and it may be the move that actually puts him in zugzwang later on, but I am not sure.