Это то, что вы просили ...
Delphi хранит даты как количество дней с 31.12.1899, поэтому, когда вы пишете первую дату, вы делаете 40731 (количество дней с 3112/1899) - 0, поскольку вы еще не ввели вторую дату.
Решение состоит в том, чтобы не рассчитывать поле, если обе даты не заполнены.установить для столбца сетки тип данных целое число.
if (Temp.FieldByName('BIV_OD').AsDateTime > 0) and (TEMP.FieldByName('BIV_DO').AsDateTime > 0) then
TEMP.FieldByName('DAYS').AsInteger:= Daysbetween(TEMP.FieldByName('BIV_OD').AsDateTime,TEMP.FieldByName('BIV_DO').AsDateTime)
else
TEMP.FieldByName('DAYS').Value := Null; //don't display anything.