なぜlong型? 元のプログラムはshortでしょ

また、intのdurationにlongを突っ込んでいるのもまずいかな

shortで試してみては?