Most recent fixed date (i.e. 4th July) before given date
First, let's use MySQL's format for dates:

Start date:  xxxx-04-27
Claim date:  2016-04-26


Now we need to combine the '2016' (or 2016-1) from the Claim date to the '04-27' of some Start date.  It does not matter whether it is the original or current "start date".  To decide on the "-1", we need to compare both mm-dd values, which can be done as simple string.

In the following code, I am assuming DATE datatype was used; using string functions works fine.  For example:

SELECT LEFT(curdate(), 4), RIGHT(curdate(), 5);
+--------------------+---------------------+
| LEFT(curdate(), 4) | RIGHT(curdate(), 5) |
+--------------------+---------------------+
| 2016               | 11-21               |
+--------------------+---------------------+


Here's the expression to generate '2015-04-27', which can be used as a DATE or in DATE_FORMAT() to format it as desired:

CONCAT(
    LEFT(claim_date, 4) -
    IF(RIGHT(claim_date, 5) &lt;=        -- may want just '&lt;'?
       RIGHT(start_date, 5),  1, 0),  -- whether to back up a year
    '-',
    RIGHT(start_date, 5) )  -- tack on proper 'mm-dd'


I thought about using julian dates, but leapday messes up things.