I guess the problem is not going below z=0 but that your 2 z min end stops will trigger first. That case is not covered. We expect to home with z probe or z max homing. So hope you can do a bit programming. In Endstops.cpp you need to modify
void Endstops::update()
What you actually want is that parts like
#if (Z_MIN_PIN > -1) && MIN_HARDWARE_ENDSTOP_Z
if (READ(Z_MIN_PIN) != ENDSTOP_Z_MIN_INVERTING)
newRead |= ENDSTOP_Z_MIN_ID;
#endif
only trigger when Printer::isHoming() is true. Same for second z min pin. That you would succeed for z probing. That also solves the problem that you need to move lower and do not want z min tests on regular moves either.