I am wondering why you are putting a transaction inside a transaction. Although this is not unheard of and certainly useful at times, if you attempt to rollback the outside transaction (tran1) then everything inside that transaction will get rolled back, including the second transaction. If this is not your intention, split the logic into two separate transactions. If you do indeed want to roll back everything, I would recommend something a little more straight forward such as:
DECLARE @Err INT
SET @Err = 0
BEGIN TRANSACTION
/***Some logic here***/
--Check for any errors
SET @Err = @Err + @@ERROR
/***More logic***/
--Check for any errors
SET @Err = @Err + @@ERROR
IF @Err > 0
ROLLBACK
ELSE
COMMIT