OK. My first question is, why did you do this?

DEGLAT = LAT[0] * 10 + LAT[1] 'DEGLAT IS DEFINED AS DEGLAT VAR BYTE
I would have thought I would have got an output of 38 when I used the following
' Instead I got 36
Keep in mind that if you are sending these numbers out as their ascii characters to be read on a screen, or printed, you just need to send them out as is. Are you trying to pack the numbers $33,$38 into a single hex byte $38 ? If so, it will not print as "38", but you can do real math to them.
You need to subtract $30 from the first character and shift it 4 places to the left...
DEGLAT = (LAT[0] - $30) <<4
I = LAT[1]& %00001111 ; This keeps the lower 4 bits only. ie.. I becomes $08.
DEGLAT = DEGLAT + I ; Will make DEGLAT $38

Is this what you want?