Pokemon training just got a whole lot easier!!!!
Yes, my friends, it is one of those days where you just have to jump for joy.  Thanks to yet another bug in Pokemon (if I counted them all, it would take me years), maxxing out your Pokemon's stats just got a whole lot easier!

Take a look at this pokemon I have here, just ignore the fact that his name is BULBASAUR.  He's level 100, and based on his stats you can tell that he has the absolute lowest stats possible for a Pikachu at level 100.  No matter how many monsters you fight, no matter how much stat EXP you acquire, this Pikachu's stats can't change anymore, right?

WRONG! A bug in Pokemon will save us!  This bug is most likely due to programmer laziness or memory constraints.  To save space/time, when you deposit a Pokemon into a box only its type, name, moves, PP/HP remaining, level, stat exp and starting bonus points are saved to the game's memory save file. The actual stats (max hp, attack, defense, speed, special) aren't saved!!!
Which means that every time you put a Pokemon into a box and take it out, its stats will be RECALCULATED with the Pokemon's current amount of stat exp!  Watch what happens when we exploit this bug with our level 100 Pikachu after gaining a ton of stat exp...
EUREKA~!!! Check out those stats compared to the ones above! Something interesting to notice is that he still only has 180 HP, but his max HP is now 243.
So what does this mean? Well, as far as training Pokemon, this makes the absolute most important stage in Pokemon training is capturing a wild Pokemon with high stats at the beginning!  This also means that your L100 Pokemon can still increase his stats.  Just fight a bunch of monsters, get a bunch of stat EXP, shove that monster in and out of a box, and there ya go!
YES, this trick DOES work with Gold and Silver!