Difference as a negative
There are many approaches that can be used to always return the difference between two numbers as a negative number. The most obvious is a variation on your current approach with ABS since that wouldn't require any conditional logic. You could also use a conditional IF function which is longer and unnecessary in this case.
ABS Function
As you pointed out, ABS always returns a positive number, therefore you can simply convert the number returned by the ABS function to a negative value. In that manner, you will always return a negative value without ever needing to know anything about the calculation inside. This is both the simplest and shortest approach.
=-ABS(num1-num2)
# Examples
+-----------------+-----------------+----------------+
| = -ABS(7.5-10) | = -ABS(10-7.5) | = -ABS(10-10) |
| = -ABS(-2.5) | = -ABS(2.5) | = -ABS(0) |
| = -2.5 | = -2.5 | = 0 |
+-----------------+-----------------+----------------+
IF Function
The IF function allows one to conditionally test the numbers and perform subtraction in the preferred order to favor a negative difference.
Syntax: IF(logical_expression, value_if_true, value_if_false)
logical_expression: is num1
smaller than num2
value_if_true: subtract num2
from num1
value_if_false: subtract num1
from num2
=IF(num1<num2, num1-num2, num2-num1)
# Examples
+-------------+--------+---------+
| logicalTest | ifTrue | ifFalse |
+-------------+--------+---------+
| = IF(7.5<10, 7.5-10, 10-7.5) |
| = 7.5-10 | # True
| = -2.5 |
+-------------+--------+---------+
| logicalTest | ifTrue | ifFalse |
+-------------+--------+---------+
| = IF(10<7.5, 10-7.5, 7.5-10) |
| = 7.5-10 | # False
| = -2.5 |
+-------------+--------+---------+
| logicalTest | ifTrue | ifFalse |
+-------------+--------+---------+
| = IF(10<10, 10-10, 10-10) |
| = 10-10 | # False
| = 0 |
+-------------+--------+---------+