added zmin arg to plot.surface and cleaned up zmin/max logic