I use hashing for booleans and frequencies, and I think that's the main use case (it is the one envisioned by [Weinberger et al.](http://alex.smola.org/papers/2009/Weinbergeretal09.pdf)). So, negative elements are only produced by the hash function, not the actual data source. In that case, scaling should be done by setting the min to zero and the max to the maximum of absolute values in X.