Index: usermodes.c
===================================================================
--- usermodes.c	(revision 311)
+++ usermodes.c	(working copy)
@@ -209,13 +209,13 @@
       log_irTrain("invalid ir-address\n");
     }else{
       g_params->irCommandCodes[mode_trainIrState.curKey-1] = i_irCode->command;
-      ++mode_trainIrState.curKey;
       if( mode_trainIrState.curKey == UI_COMMAND_COUNT ){ /* finished */
         log_irTrain("Ir train finished\n");
         wcEeprom_writeback( g_params, sizeof(*g_params) ); /* save all */
         quitMyself(MS_irTrain,NULL);
         return TRUE;
       }
+      ++mode_trainIrState.curKey;
     }
   }else{
     mode_trainIrState.seconds = UINT8_MAX;
@@ -564,7 +564,7 @@
 
     if( UI_AUTOOFFTIMES_COUNT == mode_setOnOffTimeState.currentTimeToSet )
     {
-      mode_setSystemTimeState.prohibitLeave = FALSE;
+      mode_setOnOffTimeState.prohibitLeave = FALSE;
       quitMyself( MS_setOnOffTime, NULL);
     }else{
         dt.hh = g_params->autoOffTimes[mode_setOnOffTimeState.currentTimeToSet].h;
