Negative values in time series forecast
The model is giving you its best guess.
It is simply extrapolating into a negative predicted value based on the observed inputs. This is where, "outside logic" comes in. Simply pass the predictions through a function that replaces negative values with 0. This is a common practice.
As simple as:
df[df < 0] = 0