This came up on the 
Storm Haven forums, so I figured I'd mention what I have come up with so far, since this is still an issue.
After doing some digging (thanks to 
#mlog SPELLS__STACKING on), it appears this is failing in the function 
Mob::CheckStackConflict:
	Code:
	 1992 		if(sp2_value < sp1_value) {
 1993 			mlog(SPELLS__STACKING, "Spell %s (value %d) is not as good as %s (value %d). Rejecting %s.",
 1994 				sp2.name, sp2_value, sp1.name, sp1_value, sp2.name);
 1995 			return -1;	// can't stack
 1996 		}
 And I believe it is because there should be a check, not only for the first spell, but also the 2nd spell to see if the slot is blank. If that's the case, we can just change 
this
	Code:
	 1913 		if(IsBlankSpellEffect(spellid1, i))
 1914 			continue;
 to this:
	Code:
			if(IsBlankSpellEffect(spellid1, i) || IsBlankSpellEffect(spellid2, i))
			continue;
 I'll try compiling this here in a few and see if it works.