You said your problem is that you were getting the same result for 2 and 0. I explained that 0 really meant 5. The unmentioned conclusion is that if you were able to successfully ping a machine with a 2 second wait, then you'll also be successful if you wait for 5 seconds, so it's no surprise you get a "success" result with both values.
I must not have been clear. I got results of 2 and 0 (in $delay1, the time the ping took) with the code above. My problem is that I cannot see how I can get 0 with the timeout set to 2, unless 0 means "no reply" which is what 2 (==timeout) seems to mean.