  #ifdef USE_BAB
  	OPT_WITH_ARG("--bab-options",
 diff --git a/driver-avalon2.c b/driver-avalon2.c
-index 5261054..7b8b7ad 100644
+index 5261054..189d669 100644
 --- a/driver-avalon2.c
 +++ b/driver-avalon2.c
 @@ -51,6 +51,8 @@ int opt_avalon2_fan_max = AVA2_DEFAULT_FAN_MAX;

 		memcpy(send_pkg.data + 4, &tmp, 4);
 
diff --git a/driver-avalon2.h b/driver-avalon2.h
index ca2e2df..40f11ca 100644
--- a/driver-avalon2.h
+++ b/driver-avalon2.h
@@ -37,6 +37,8 @@
 #define AVA2_DEFAULT_FREQUENCY_MIN	300
 #define AVA2_DEFAULT_FREQUENCY_MAX	2000

 /* http://www.onsemi.com/pub_link/Collateral/ADP3208D.PDF */
 static inline uint32_t encode_voltage(uint32_t v)
 {
@@ -209,7 +222,7 @@ static int decode_pkg(struct thr_info *thr, struct avalon2_ret *ar, uint8_t *pkg
 
 		memcpy(&modular_id, ar->data + 28, 4);
 		modular_id = be32toh(modular_id);
-		if (modular_id == 3)
+		if (modular_id > 3)
 			modular_id = 0;
 
 		switch(type) {
@@ -429,7 +442,7 @@ static int avalon2_stratum_pkgs(int fd, struct pool *pool, struct thr_info *thr)
 	while (avalon2_send_pkg(fd, &pkg, thr) != AVA2_SEND_OK)
 		;
