Random treasure issue has been noted.  So Zannaster turns into the Demi-Lich as he should in your game?  Just for the sake of knowing, can you cntrl+y cheat kill him?  If not, then there is something going wrong.
Ok Hoppy,
I submit the problem here   "Baldur's Gate et Dragon Age | La Couronne de Cuivre > La Saga Baldur's Gate et l'univers des RPG > L'Univers Baldur's Gate > Le Bazar de l'Aventurier"  
A member named Isaya gave me some answers :
First she discovered some errors in  CBC8CTZA.bcs first paragraph so here :
IF
	Global("Cb_ZannasterHealed","LOCALS",3)
	See(NearestEnemyOf(Myself))
	HPPercentLT(Myself,10)
	HasItem("CBPOTNLD",Myself)
	Global("ZannasterFinallyChanging","AR3532",0)
THEN
	RESPONSE #100
		SetGlobal("CbZannasterFinallyChanging","AR3532",1)
		DestroyItem("CBPOTNLD")
		StartDialogueNoSet(Player1)
ENDIsaya found that "Cb" was missing in the variable : Global("ZannasterFinallyChanging","AR3532",0)
he suggests me to correct this so it became : Global("CbZannasterFinallyChanging","AR3532",0)
I tried this with 
NI but nothing changes with a save from the same level in this quest. So I tried from  the auto-save just before entering this last dungeon level.
This time, I manage killing Zannaster but in his mage form. He didn't change into a lich. So the quest was not considered as ended.
I saw that Zannaster was supposed to heal a couple of time before  talking then  drink his potion of Lichdom and become a lich. But in my play, Zannaster didn't manage to heal. I saw him trying but each time the spell failed. Was it due to his own magical protections  or because he was always moving   due to the  drink a lot of speed potions  ? I don't know.
 Not being sure to having understood your follwing  post I submit it to the forum :
ClearAllActions()
SetGlobal("CbZannasterFinallyChanging","AR3532",2)
ChangeAnimationNoEffect("CBC8CTZL") // Zannaster the LichA member named Graoumf answers me after having  found an old post from somebody named Mad Martigan here  : JoL.
Then Isaya answers me that Zannaster was supposed to heal three times before turning into a lich (see below) 
IF
	HPPercentLT(Myself,25)
	!HaveSpell(WIZARD_STONE_SKIN)
	GlobalLT("Cb_ZannasterHealed","LOCALS",3)
THEN
	RESPONSE #100
		ApplySpell(Myself,CLERIC_HEAL)
		IncrementGlobal("Cb_ZannasterHealed","LOCALS",1)
ENDThen Isaya gave me some CLUA formula first to check to which variable Zannaster/mage was about is "healing situation" like this :
CLUAConsole:GetGlobal("Cb_ZannasterHealed","LOCALS").The variable was 0, and I was to change this in 3 to force the Zannaster's changing.
So here is the code :
CLUAConsole:SetGlobal("Cb_ZannasterHealed","LOCALS",3)Oh,don't forget to point Zannaster when  you "CLUAte" him...
Then I attack him with only  my main character, a warrior under a protection against magic scroll.
After some good strikes making him high damages  Zannaster changes in Lich. I killed him and the quest ends...
Hallelouia !!!!!!!!
This seems to be a bit tricky but for instance it's the only way for me to end this quest. 
 I thank you everybody for helping me especially Isaya, Graoumf, Hoppy....
					
					
					
				
 
				
				
				
				
								
				
					
	
	Stupidity valued on stock exchange ? Good !  No more financial crisis !  God  we should be surrounded by multibillionnaries !