The original code
[quote]
if(vy>0) return 1;
return y;
[/quote]

The above code is the same as
if(vy>0) return 1;
else return y;

if(vy>0) it means that particle is moving upward, so there is no bouncing need to be take care of.
otherwise, it will check if y is less than bouncing point y=0;

You change the code to
if(y<-0.5)return y; it mean that particle will bounced at y=-0.5 (not y=0).