You sure? https://play.golang.org/p/b-RTM2MChld
а зачем проверять <= если все равно 0 присваивается?
d<0 { d = 0 } в чем разница? d <= 0 { d=0 }