Here is my thinking on the matter. The total current ##I## through a surface is formally defined using the current density, ##I=\int_S \vec J\cdot \hat n~dA## where ##\hat n## is a chosen normal to the surface and such that ##\vec J \cdot \hat n## is positive, i.e. the charge carriers are moving (mostly) in the direction of ##\vec J##. I think of current ##I## as a positive scalar, analogous to pressure ##p=\frac{\vec F \cdot \hat n }{dA}## where the force is the vector quantity that specifies direction. When current (or pressure) turn out to be negative, all this means is that the explicitly or implicitly chosen normal to the area element ##dA## forms an angle greater than ##90^o## relative to the current density (or force).
In the standard justification for ##I=dq/dt##, one imagines amount of charge ##dq## moving by a fixed point in time ##dt##. In that respect, current ##I## is like a one-dimensional speed ##v=ds/dt##. If a one-dimensional speed (for whatever reason) turns out to be negative, we say that the velocity is "opposite" to the assumed direction; we never say that the speed is in the opposite direction. Likewise, it seems to me that, for consistency and to avoid confusing the vector with its magnitude, when the current ##I## or ##dq/dt## turn out to be negative, it is appropriate to think of the current density (or direction of carrier flow) being opposite to the assumed direction.
I prefer to think of current direction in terms of ##\vec J## in which case the sign of the charge carriers does not matter. It helps me keep negative signs sorted out.