The questions about Early Bird reminded me of something. The Smogon Status Guide (and prevailing wisdom) maintain that confusion has no set counter, but rather a Pokémon has a set chance to be freed from confusion with each action it takes. In this way, it is like the 'frozen' status ailment.
I've seen a lot of confused Pokémon and I could not for the life of me ever remember a Pokémon immediately snapping out of confusion (spending 0 turns confused). Nor could I ever recall confusion lasting longer than 4 turns. Not wanting to rely on my memory (especially about the 4-turns bit), I ran some simple tests. I battled the two Pachirisu on Route 104 with my Staraptor and Spiritomb. The Spiritomb used Confuse Ray on the Staraptor whenever necessary and the Staraptor used Foresight on the second Pachirisu after KOing the first one. I confused the Staraptor 24 times. My results were as follows:
0 turns confused: 0 occurrences
1 turn confused: 8 occurrences
2 turns confused: 3 occurrences
3 turns confused: 7 occurrences
4 turns confused: 6 occurrences
>4 turns confused: 0 occurrences
Just for comparison's sake, here are what the approximate average results should be using the prevailing theory:
0 turns confused: 6.0 occurrences
1 turn confused: 4.5 occurrences
2 turns confused: 3.4 occurrences
3 turns confused: 2.5 occurrences
4 turns confused: 1.9 occurrences
>4 turns confused: 5.7 occurrences
Just to give you an idea about how unlikely the current theory is to be true, the chance of the Staraptor always spending at least one turn confused in 24 trials is 0.75^24, or 0.00100, or about 1 in 1,000.
The chance of the Staraptor never spending more than 4 turns confused in 24 trials is (1 – (0.75^5))^24, or 0.00150, or about 1 in 667. In fact, if you take the first turn of confusion as a given, the chance of never spending more than 4 turns confused drops to 1 in 9222.
So, yeah, I don't know where we got our current idea about this mechanic, but it's wrong. I think it's far more likely that confusion lasts 1-4 turns, just like sleep.
EDIT: Ah, looking at the Shoddy code, it appears that confusion already has a turn-decrementing implementation. This leads me to believe that the results of my tests are already known. In that case, we just need to update the site's Status Guide