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