I was troubleshooting a mass-matrix ODE model for nonconvergence due to `DtLessThanMin`

.

It turns out that, with a set of properly initialized nonlinear algebraic equations (i.e., the mass matrix is all zero), OrdinaryDiffEq solvers will fail when a parameter change is applied at an arbitrary time using `DiscreteCallback`

.

The warning message shows that the estimated error is tiny compared with 1:

```
┌ Warning: dt(1.7763568394002505e-15) <= dtmin(1.7763568394002505e-15) at
│ t=1.0, and step error estimate = 1.654973077755173e-10. Aborting. There is
│ either an error in your model specification or the true solution is
│ unstable.
└ @ SciMLBase
```

But according to timestepping, the step should be accepted because the error is less than one.

Question: Why is this step with such a small error not accepted? Do value jumps in algebraic variables impact the scaled error?

I then tried to apply the same parameter change at time `t=0`

. With the same initial condition, OrdinaryDiffEq can successfully solve the system. At least, this verifies the algebraic system after parameter change is solvable.

Question: Is it because, for the very first step, the error is not checked?

I don’t have an MWE yet but would like to ask in case I missed something obvious.