Strange behavior when combining CONVERT(CHAR()) with RIGHT()
It's because of how the CHAR data type works. 

Take a look at this example:

 DECLARE @d decimal(15,2)
 SET @d = 15.52

 SELECT CAST(@d AS CHAR(8)) AS CharD
 SELECT DATALENGTH(CAST(@d AS CHAR(8))) AS LengthCharD

 SELECT CAST(@d AS VARCHAR(8)) AS VarcharD
 SELECT DATALENGTH(CAST(@d AS VARCHAR(8))) AS LengthVarcharD


Notice the length of @d is 8 when it's CHAR but 5 when it's VARCHAR. CHAR is fixed width and thus padded with blanks.

Once you add '000000' to it and remove the decimal, you've now got a 13 character string: '0000001552&lt; blank>&lt; blank>&lt; blank>. 
When the RIGHT function gets just the right 6 characters, the result is 552&lt; blank>&lt; blank>&lt; blank>. 

'000000' is VARCHAR. VARCHAR + your CHAR string will result in a VARCHAR string but still includes the blanks from the CHAR.

VARCHAR does not pad with blanks and thus avoids this &lt; blank> issue.