FYI
A little self-contained halving calendar in Python, checked with doctest. The dates refer to the START of each step.
The next per-block reward reduction (from 128 to 64 Q2C) will happen this coming Sunday - 27th. April 2014.
The per-block reward will drop to 32 Q2C on 18th. May and to 16 Q2C on 8th. June.
>>> from datetime import datetime, timedelta, date
>>> launchdate = datetime(2014, 1, 12)
>>> launchdate.isoformat()
'2014-01-12T00:00:00'
>>> halvener = timedelta(21)
>>> print(halvener)
21 days, 0:00:00
>>> ncoins = 0
>>> blockreward = 2048
>>> halving_every = 60480
>>> cnt = 0
>>> while blockreward > 1:
... ncoins_this_step = blockreward * 60480
... print((launchdate + (halvener * cnt)).date().isoformat(), blockreward, ncoins_this_step)
... blockreward = max(0, int(blockreward / 2))
... ncoins += ncoins_this_step
... cnt += 1
2014-01-12 2048 123863040
2014-02-02 1024 61931520
2014-02-23 512 30965760
2014-03-16 256 15482880
2014-04-06 128 7741440
2014-04-27 64 3870720
2014-05-18 32 1935360
2014-06-08 16 967680
2014-06-29 8 483840
2014-07-20 4 241920
2014-08-10 2 120960
>>> ncoins
247605120
After the completion of the reducing steps, a 1 Q2C per-block reward pertains (with a target of 1 block per minute) for another 13 years.
Y'all might want to think about switching to an ASIC-friendly algo at some point, for when the per-block reward reduces to 1.
HTH
Cheers,
Graham