[backport] Fix for SI-6206, inconsistency with apply.

Squashed commit of the following:

commit f6bbf85150cfd7e461989ec1d6765ff4b4aeba51
Author: Paul Phillips <paulp@improving.org>
Date:   Mon Oct 1 09:10:45 2012 -0700

    Fix for SI-6206, inconsistency with apply.

    The code part of this patch is 100% written by retronym, who
    apparently has higher standards than I do because I found it just
    lying around in his repository. I think I'll go pick through his
    trash and see if he's throwing away any perfectly good muffins.

    I made the test case more exciting so as to feel useful.
    (cherry picked from commit 267650cf9c3b07e360a59f3c5b70b37fea9de453)


Review by @paulp