To clamp it, you can fiddle with the values that you get from the dot product and handle them like you would any other scalar. They should generally be in the range of 0-1.
Shouldn't you be getting the dot product of the Light Vector and the Surface Normal? In your node network, you're dotting Camera Vector with... itself. Which will net you 1 (I assume it feeds into the subsequent dot node as [1,1,1], which is... wrong). Also, mind that this will still return lit even if there's a cast…