If you are using the Subtract Scalar Volumes module, then the issue is that the module sets the output type to match the type of the first input volume. If your first input has a unsigned type, then the output type will also be unsigned, and all negative values will be clamped to 0. The simplest fix is to use the Cast Scalar Volumes module to change the input type to something with sufficient range (signed int or float are typically a good choice, but you need to know your data).
Alternatively you could write a script in Python to do this for you, there are several relevant examples in the repository about doing math on image voxels: