This is not entirely the same, as it changes coloring and z-scaling, but perhaps something similar may be of help. Essentially, the zero values are lifted by a small increment, while the original z-range is preserved.
data = {{1, 1, 1, 1}, {1, 0, 3, 1}, {2, 0, 0, 1}};
ListPlot3D[data /. x_ /; x < .01 -> 0.01, Mesh -> None,
InterpolationOrder -> 0, Filling -> Bottom,
FillingStyle -> {Opacity[1]}, ColorFunction -> "SolarColors",
ViewPoint -> {Pi, Pi, 5},
PlotRange -> {Automatic, Automatic, {Min[data], Max[data]}}]