diff --git a/codecs/codec_speex.c b/codecs/codec_speex.c
index 3c65ee51b19adb39c6ede3941962dfa1cfbc7567..a0a80959e7a411b3cb3c0c5bef9c6805cece43ef 100644
--- a/codecs/codec_speex.c
+++ b/codecs/codec_speex.c
@@ -603,39 +603,37 @@ static int reload(void)
 
 static int unload_module(void)
 {
-	int res = 0;
-
-	res |= ast_unregister_translator(&speextolin);
-	res |= ast_unregister_translator(&lintospeex);
-	res |= ast_unregister_translator(&speexwbtolin16);
-	res |= ast_unregister_translator(&lin16tospeexwb);
-	res |= ast_unregister_translator(&speexuwbtolin32);
-	res |= ast_unregister_translator(&lin32tospeexuwb);
+	ast_unregister_translator(&speextolin);
+	ast_unregister_translator(&lintospeex);
+	ast_unregister_translator(&speexwbtolin16);
+	ast_unregister_translator(&lin16tospeexwb);
+	ast_unregister_translator(&speexuwbtolin32);
+	ast_unregister_translator(&lin32tospeexuwb);
 
-
-	return res;
+	return 0;
 }
 
 static int load_module(void)
 {
 	int res = 0;
 
-	if (parse_config(0))
+	if (parse_config(0)) {
 		return AST_MODULE_LOAD_DECLINE;
+	}
 
+	/* XXX It is most likely a bug in this module if we fail to register a translator */
 	res |= ast_register_translator(&speextolin);
 	res |= ast_register_translator(&lintospeex);
 	res |= ast_register_translator(&speexwbtolin16);
 	res |= ast_register_translator(&lin16tospeexwb);
 	res |= ast_register_translator(&speexuwbtolin32);
 	res |= ast_register_translator(&lin32tospeexuwb);
-
 	if (res) {
 		unload_module();
-		return res;
+		return AST_MODULE_LOAD_DECLINE;
 	}
 
-	return res;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Speex Coder/Decoder",