for(i = 0 ; i < 11 ; i++)
if(data[i] == 1) result |= (1<<i);
You are missing curly braces. Without them, to us mere mortals, the intent is not clear.
case 64:
desired=100;
break;
case 1088:
desired=0;
break;
case 128:
if (desired < 100) { desired=desired++; }
break;
case 1152:
if (desired > 0) {desired=desired--;}
break;
Magic numbers suck.
lcd.print(desired);
lcd.print(" ");
light();
getIRKey();
Print the value modified by the getIRKey() function, then call the getIRKey() function. Do you not see a problem with this order?
i have deleted everything not important, like the stepper motor controls, to get the code it's simplest form possible.
So, in this code, there is no motor moving/not moving, so that problem has gone away. What problem does this code have?
Ken Shirrif wrote a nice IR library, using interrupts. Why are you not using it?