Yeah, OggDude, I can definitely see how it's a complex thing to model effectively.
I haven't come up with anything better than some kind of "locking down" the XP spent so that, instead of the XP being calculated dynamically based on the current state of the user, it's "frozen" and stored as a discrete number when you lock it down.
Obviously one of the challenges is that it's nice to have a program where you can play with a lot of different options and you're not restricted by the same rules as characters have to follow.
You can put in a character with a negative XP value, you can return Skill ranks or lower characteristics, all the stuff you'd want to do in order to tinker around with a character.
That's really valuable, so I'm not sure what the most elegant solution is.