Here's an improved patch with a better regression test.