I was just reading through and noticed this, so I thought I would point out: The reason the ErrorDocument returned a 200 is because of a the configuration in the .htaccess file, which caused an external request for the document to be generated by the browser rather than the location being found internally by the server.
On any website, including: www.example.com this will generate a 200 OK, assuming the page is served properly:
ErrorDocument 404 http://www.example.com/404.htm
On any website, including: www.example.com this will serve a 404 Not Found as expected, assuming there is a page at 404.htm:
ErrorDocument 404 /404.htm
The difference is where the request for 404.htm is made:
In the first example the request is made by the browser.
In the second example the request is made by the server.