I also played with the charge to tune the Fermi level in semiconductors. I didn't use such extreme levels, since you turn Si metallic basically, I was more in the 0.01 range, and it was possible then to move the Fermi level from the middle of the gap all the way up to the CB.
So, I'm a bit surprised about the device behavior... I'll have a look and see if there is something missing - not in your script, but perhaps in the algorithm, to handle this.