\r
 #if defined(XPROG_VIA_HARDWARE_USART)\r
        /* Wait until a byte has been received before reading */\r
-       uint8_t TimeoutMSRemaining = 100;\r
        while (!(UCSR1A & (1 << RXC1)) && TimeoutMSRemaining)\r
        {\r
                /* Manage software timeout */\r
 #else\r
        /* Wait until a byte has been received before reading */\r
        SoftUSART_BitCount = BITS_IN_USART_FRAME;\r
-       uint8_t TimeoutMSRemaining = 100;\r
        while (SoftUSART_BitCount && TimeoutMSRemaining)\r
        {\r
                /* Manage software timeout */\r
                }\r
        }\r
 \r
+       if (TimeoutMSRemaining)\r
+         TimeoutMSRemaining = COMMAND_TIMEOUT_MS;\r
+\r
        /* Throw away the parity and stop bits to leave only the data (start bit is already discarded) */\r
        return (uint8_t)SoftUSART_Data;\r
 #endif\r
        }\r
        \r
        /* Wait until DATA line has been pulled up to idle by the target */\r
-       uint8_t TimeoutMSRemaining = 100;\r
        while (!(BITBANG_PDIDATA_PIN & BITBANG_PDIDATA_MASK) && TimeoutMSRemaining)\r
        {\r
                /* Manage software timeout */\r
        }       \r
 #endif\r
 \r
+    if (TimeoutMSRemaining)\r
+         TimeoutMSRemaining = COMMAND_TIMEOUT_MS;\r
+\r
        IsSending = false;\r
 }\r
 \r