If these three lines are all in the load script, then the updated value of [DS_Need_Date] and [DS_Forecast_Date] are not available when line 3 is executed, so the condition always evaluates to false. If either field is null, empty, or non-numeric, this expression will return null and will never return zero. A simpler way would be
Alt([DS Need Date]-[DS Forecast Date], 0) as [Need-Forecast] // note field name spelling
This assumes that the two date fields are numeric data values and not strings.