Is UPDLOCK required?
try REPEATABLE READ

on the select statements:


  Specifies that statements cannot read data that has been modified but
  not yet committed by other transactions and that no other transactions
  can modify data that has been read by the current transaction until
  the current transaction completes.