You can't do:
convert(char(02), @endYear - 1)
because it will exceed the precision of the calculation (which needs 4 digits, and you are only providing CHAR(2))
DECLARE @endYear varchar(04) = 2016
select convert(char(02), @endYear - 1)
But as others have said you should not use mm/dd/yy style date formats in conversions, they are ambiguous and SQL may well handle them differently in the future if something changes - such as the language of the currently connected user.
SET LANGUAGE French
SELECT CONVERT(datetime, '12/31/2016') -- This will raise an error
SET LANGUAGE English
SELECT CONVERT(datetime, '12/31/2016')
Stick to using 'yyyymmdd' format for string-to-date conversions as SQL will always treat a string of 8 digits as being this, unambiguous, format - regardless of locale / language / whatever settings and options.
An 8 digit string will even be treated as 'yyyymmdd' if you explicitly try to override the conversion with
SET DATEFORMAT mdy
and so on and such forth ...