I'd avise to set a maximum zoom factor. For example the arbitrary value: 5.
and a minimum zoom factor.  It could be min(1, initialScaleValue).