Here is the patch.
You need to kill notify-osd and start the new one from the new source code.
notify-send does all the right thing by sending all the data through dbus. On the other hand, notify-osd doesn't respect the "timeout" value sent by notify-send and instead uses the default values.
notify-send sends "-1" to denote "default timeout", when "-t" option is "NOT" given. Otherwise, the user specified timeout value is sent. So, what I do is use the default timeout values when "-1" is sent and the user specified value otherwise.
I'm not an active developer. So, my fixes might be broken. Please use it with caution :)