You can use Negate() to change a negative value to a positive
From MSDN
If the date and time of the current instance is higher than the value, the method returns a TimeSpan object that represents the negative span time. That is, the value of all its non-zero properties (such as Days or ticks) is negative.
So you can call the Negate method depending on which value is larger and get a positive Timespan
Say we have startDate and endDate (endDate is larger than startDate), so when we do startDate.Subtract(endDate) we get a negative Timespan . Therefore, based on this check, you can convert a negative value. So if your waiting time is ahead sooner, it will give you a negative TimeSpan
EDIT
Please check Duration() in Timespan , this should mean absolute value
Earlybeforetime.Duration()
source share