This is normal, completely expected and has been discussed many times on this forum.
First of all, 0 and -0 are identical in IEEE, so these are effectively the same values.
Furthermore, CPLEX may return tiny negative numbers instead of 0. This is due to numerical roundoff and cannot be completely avoided as long as you use a solver that uses floating point arithmetic. You can try setting CPX_PARAM_EPINT to 0, that makes it a lot less likely for these roundoff problems to happen for integer variables.
#CPLEXOptimizers#DecisionOptimization