I think the relevant function would be int AddCharacterExpNSChar(ref _refCharacter, string expName, int _exp) in PROGRAM\MAXIMUS_functions.c .
Would replacing this:With this:Code:if (curExp >= nextExp)
Be enough?Code:while (curExp >= nextExp) // PB: Keep doing this while necessary
Probably also replace this:With this:Code:int nextSkill = 50000; if (curSkill >= nextSkill) {
Code:int nextSkill; while (curSkill >= nextSkill) // PB: Keep doing this while necessary { nextSkill = 50000; // PB: Move down to reset
Probably! I had just staggered through various areas of code

Hopefully that will at least introduce the desired loop so that too high values result in actual skill and level increases instead of the numbers "sticking around".
This won't fix the reason why these sudden huge XP gains occur but at least should make them behave a bit more sensibly.
I did see this in the same function
// Make sure our character has all the necessary attributes
//==========================================================
if (!CheckAttribute(_refCharacter,"Experience."+expName))
{
_refCharacter.Experience.(expName) = makeint(sti(Rand(19)+1)*1000);
on my way here and wondered if that could be the trigger -although why a character should be created missing values in expName would then be the question.?