It’s entirely possible for the ODE solver to go negative (even if mathematically the eqs shouldn’t).
Given the tolerances:
1e-6, 1e-5
Seeing numbers below zero on the order of the tolerances kinda makes sense in that regard.
You can either write your ODE on the log scale (\frac{\partial \log y}{\partial t} = \frac{1}{y} \frac{\partial y}{\partial t}), or you might get away with just adding a small number to the output of your ODE to make sure things are positive.
But you could check that this is a tolerance thing by making the tolerances smaller and seeing if the errors about things being below zero stay the same.