Unfortunately, this bug is not easy to fix. The problem is that `-O' was originally invented for streaming, i.e. for `-O -'. As a result, many places in Wget's code assume that they can freely operate on the file names, and -O seems more like an afterthought.
On the other hand, many people (reasonably) expect `-O x' to simply override the file name from whatever was specified in the URL to "x". But the code doesn't work that way. I plan to change the handling of file names to make this work, but that will take some time. Unless someone takes time to fix this in the existing code base, the bug will remain open until the said reorganization. Until then, the workaround is to avoid the `-O -N' combination.