diff --git a/examples/GPIO_analogRead/wiring.c b/examples/GPIO_analogRead/wiring.c
index b8a71d386d41157970121845b7629d7b58a142f6..d6968570f124fd81c5d5adefdfa7428cb7ea2376 100644
--- a/examples/GPIO_analogRead/wiring.c
+++ b/examples/GPIO_analogRead/wiring.c
@@ -43,36 +43,18 @@ void portEnable(enum GPIOports port) {
 }
 
 
-
 void pinMode(enum GPIOpins pin, enum GPIOpinMode mode) {
 	GPIO_TypeDef * GPIOx;
-	uint16_t PinOffset = 0;
+	uint16_t PinOffset;
 
-	if (pin <= pin_A7) {
-		GPIOx = GPIOA;
-		PinOffset = pin << 2;
-	}
-	else if (pin <= pin_B7) { /* GPIOB doesn't actually exist (yet?)
-		GPIOx = GPIOB;
-		PinOffset = (pin-8) << 2; */
-	}
-	else if (pin <= pin_C7) {
-		GPIOx = GPIOC;
-		PinOffset = (pin - 16) << 2;
-	}
-	else if (pin <= pin_D7) {
-		GPIOx = GPIOD;
-		PinOffset = (pin - 24) << 2;
-	}
-	else {
-		return;
-	}
+	GPIOx = GPIOA+(pin>>3);
+	PinOffset = (pin & 0x7)<<2;
 
 	GPIOx->CFGLR &= ~(0b1111<<PinOffset);							// zero the 4 configuration bits
 	
 	uint8_t target_pin_state = pinState_nochange;					// by default, pin shall retain its state
 
-	uint8_t modeMask = 0;												// configuration mask
+	uint8_t modeMask = 0;												// configuration mask										// configuration mask
 
 	switch (mode) {
 		case pinMode_I_floating: