Lessons Learned:
In SQL Server, it is never appropriate to use a variable (other than a table variable) to grab what was changed in the table in a trigger as they do not work row-by row like triggers in some other databases
--HLGEM

Note that this fixes the incorrect first two updates as well. When writing SQL Server trigger, you must assume there will be more than one record in inserted or deleted. Further, you need to test the trigger by deliberately making sure that multiple records were affected by the initial insert or update. It is irresponsible to create a trigger with the assumption that only one record at a time will ever be inserted, updated or deleted. ANd if you don;t test for the behavior like that, you will have a trigger that creates a data integrity disaster as almost all tables eventually have a multiple record insert/update or deletion.