if (0.0) casts 0.0 (or -0.0, though that doesn't apply here) to false, yeah.  I use this trick in other code all the time: for parameters where 0.0 isn't a sane parameter value I let that value mean "don't use the feature which requires this parameter".  We can use a separate string identifier in the long run for picking adaptive-vs-fixed time stepping, if you prefer, though; we'll need such an identifier eventually to choose between different adaptive and different core time solvers.