Answering my own question to prevent others from tumbling into the same pit:
It turns out that when you place a TDateTimePicker on your form, the Time property gets filled with the current time and this always gets returned as part of DatePickerStart.Date. Mine was obviously placed on the form at 15:00:00
The time remains 'in' even when you use the TDateTimePicker so select another date.
So, to fix this: Clear the Time property at design time (it becomes 00:00:00) and/or always use Trunc(TDateTimePicker.Date) or DateOf(TDateTimePicker.Date) when you really only need the date.
Of itself, TDateTimePicker.Date does not return the date!.