First version of this showed funnies which took me ages to explain.
Solved it by a re-write of the code. Eventually realised that a quicker fix
would have been to declare date_default_timezone_set('UTC').

date_default_timezone_get() = Europe/London

1970-Jan-01 13:00:00
1971-Oct-31 12:00:00
1972-Mar-19 13:00:00
1972-Oct-29 12:00:00
1973-Mar-18 13:00:00
1973-Oct-28 12:00:00
1974-Mar-17 13:00:00
1974-Oct-27 12:00:00
1975-Mar-16 13:00:00
1975-Oct-26 12:00:00
1976-Mar-21 13:00:00
1976-Oct-24 12:00:00
1977-Mar-20 13:00:00
1977-Oct-23 12:00:00
1978-Mar-19 13:00:00
1978-Oct-29 12:00:00
1979-Mar-18 13:00:00
1979-Oct-28 12:00:00
1980-Mar-16 13:00:00
1980-Oct-26 12:00:00
1981-Mar-29 13:00:00
1981-Oct-25 12:00:00
1982-Mar-28 13:00:00
1982-Oct-24 12:00:00
1983-Mar-27 13:00:00
1983-Oct-23 12:00:00
1984-Mar-25 13:00:00
1984-Oct-28 12:00:00
1985-Mar-31 13:00:00
1985-Oct-27 12:00:00
1986-Mar-30 13:00:00
1986-Oct-26 12:00:00
1987-Mar-29 13:00:00
1987-Oct-25 12:00:00
1988-Mar-27 13:00:00
1988-Oct-23 12:00:00
1989-Mar-26 13:00:00
1989-Oct-29 12:00:00
1990-Mar-25 13:00:00
1990-Oct-28 12:00:00
1991-Mar-31 13:00:00
1991-Oct-27 12:00:00
1992-Mar-29 13:00:00
1992-Oct-25 12:00:00
1993-Mar-28 13:00:00
1993-Oct-24 12:00:00
1994-Mar-27 13:00:00
1994-Oct-23 12:00:00
1995-Mar-26 13:00:00
1995-Oct-22 12:00:00
1996-Mar-31 13:00:00
1996-Oct-27 12:00:00
1997-Mar-30 13:00:00
1997-Oct-26 12:00:00
1998-Mar-29 13:00:00
1998-Oct-25 12:00:00
1999-Mar-28 13:00:00
1999-Oct-31 12:00:00
2000-Mar-26 13:00:00
2000-Oct-29 12:00:00
2001-Mar-25 13:00:00
2001-Oct-28 12:00:00
2002-Mar-31 13:00:00
2002-Oct-27 12:00:00
2003-Mar-30 13:00:00
2003-Oct-26 12:00:00
2004-Mar-28 13:00:00
2004-Oct-31 12:00:00
2005-Mar-27 13:00:00
2005-Oct-30 12:00:00
2006-Mar-26 13:00:00
2006-Oct-29 12:00:00
2007-Mar-25 13:00:00
2007-Oct-28 12:00:00
2008-Mar-30 13:00:00
2008-Oct-26 12:00:00
2009-Mar-29 13:00:00
2009-Oct-25 12:00:00