I think I figured out the reason why this happens and it doesn't look to be a client issue after-all.  The problem seems to be from the code here:
client_packet.cpp line 8700:
	Code:
		for(uint32 spellInt= 0; spellInt < MAX_PP_SPELLBOOK; spellInt++)
	{
		if (m_pp.spell_book[spellInt] < 3 || m_pp.spell_book[spellInt] > 20000)
			m_pp.spell_book[spellInt] = 0xFFFFFFFF;
	}
 I think we just need to change the 20000 there to something more like 30000.