It seems that the timeout (notify-send -t 5) just doesn't work.
Created attachment 4498 Patch to fix integer wrap-around for short timeouts The problem is that when the timeout is smaller than the fading time (in this case, 5 ms vs. 800 ms), the subtraction causes the timeout to wrap around to a large number. Here's a patch to fix that.
Good catch.
Thanks for the bug report and the patch which I just pushed to git master. I slightly modified it so that the timeout is set to FADE_TIME instead of 0 when it is smaller than FADE_TIME, that way you sill get to see the notification fading.