I tried to keep the Inspector setting from being able to get to zero while leaving most freedom:
[SerializeField] [Range(float.Epsilon,float.MaxValue)] float period = 4f;
This fails (when running the game I could still have it hit NaN), probably due to rounding cutting the Epsilon value off.