It looks like diff is returning the integer difference, rounded down - so a campaign with 3 days and 7 hours remaining shows 79 hours instead of 3 days. 

We could pass in the "true" arg to enable floating point differences, or calculate against the seconds value (259200 seconds instead of 3 days). This would have the added advantage of being able to calculate the value once and then just use a case statement to match. 

http://momentjs.com/docs/#/displaying/difference/