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