diff --git a/docs/Errors.txt b/docs/Errors.txt
index dc0899e..280709c 100644
--- a/docs/Errors.txt
+++ b/docs/Errors.txt
@@ -56,6 +56,12 @@ Hex literal without any digits.
     A special literal was started, but then no digits followed. Expect
     this to become an error in future!
 
+Binary literal with strange number of digits.
+    This warning is given if the number of digits in a binary literal
+    is not a multiple of four. This is useful when you meant to write
+    %#....... but actually wrote %#........ by mistake. See? :P
+    You can disable this warning using the CLI switch "-Wno-bin-len".
+
 Bug in ACME, code follows
     A situation has been encountered implying there is a bug in ACME.
     See the last section in this file.
diff --git a/docs/QuickRef.txt b/docs/QuickRef.txt
index d5faf06..8aef78f 100644
--- a/docs/QuickRef.txt
+++ b/docs/QuickRef.txt
@@ -283,6 +283,9 @@ Available options are:
             same time enables warnings about the _new_ "!for" syntax.
             Internally, this does exactly the same as what happens
             when the "--dialect 0.94.8" CLI switch is used...
+        -Wno-bin-len
+            Do not complain about unusual number of digits in a binary
+            literal.
         -Wtype-mismatch
             Enables type checking system (warns about wrong types).
 
@@ -398,7 +401,7 @@ Examples        Notes
 $d011           hexadecimal values are indicated by either a
 0xffd2              leading "$" or a leading "0x".
 &1701           an octal value, indicated by "&"
-%010010         binary values are indicated by either a leading "%"
+%1010           binary values are indicated by either a leading "%"
 %....#...           or a leading "0b". In binary values, you can
 0b01100110          substitute the characters "0" and "1" by "." and
                     "#" respectively. This way the values are much
diff --git a/src/acme.c b/src/acme.c
index 8ff98b9..aea7677 100644
--- a/src/acme.c
+++ b/src/acme.c
@@ -70,6 +70,7 @@ static const char	arg_vicelabels[]	= "VICE labels filename";
 // options for "-W"
 #define OPTIONWNO_LABEL_INDENT	"no-label-indent"
 #define OPTIONWNO_OLD_FOR	"no-old-for"
+#define OPTIONWNO_BIN_LEN	"no-bin-len"
 #define OPTIONWTYPE_MISMATCH	"type-mismatch"
 
 
@@ -141,6 +142,7 @@ static void show_help_and_exit(void)
 // TODO: replace these:
 "  -W" OPTIONWNO_LABEL_INDENT "      suppress warnings about indented labels\n"
 "  -W" OPTIONWNO_OLD_FOR "           suppress warnings about old \"!for\" syntax\n"
+"  -W" OPTIONWNO_BIN_LEN "           suppress warnings about lengths of binary literals\n"
 "  -W" OPTIONWTYPE_MISMATCH "        enable type checking (warn about type mismatch)\n"
 // with this line and add a separate function:
 //"  -W                     show warning level options\n"
@@ -606,6 +608,9 @@ static char short_option(const char *argument)
 			} else if (strcmp(argument + 1, OPTIONWNO_OLD_FOR) == 0) {
 				config.wanted_version = VER_NEWFORSYNTAX - 1;
 				goto done;
+			} else if (strcmp(argument + 1, OPTIONWNO_BIN_LEN) == 0) {
+				config.warn_bin_mask = 0;
+				goto done;
 			} else if (strcmp(argument + 1, OPTIONWTYPE_MISMATCH) == 0) {
 				config.warn_on_type_mismatch = TRUE;
 				goto done;
diff --git a/src/alu.c b/src/alu.c
index dd41966..3cd9810 100644
--- a/src/alu.c
+++ b/src/alu.c
@@ -491,6 +491,8 @@ static void parse_binary_literal(void)	// Now GotByte = "%" or "b"
 	}
 	if (!digits)
 		Throw_warning("Binary literal without any digits.");	// FIXME - make into error!
+	if (digits & config.warn_bin_mask)
+		Throw_first_pass_warning("Binary literal with strange number of digits.");
 	// set force bits
 	if (config.honor_leading_zeroes) {
 		if (digits > 8) {
diff --git a/src/global.c b/src/global.c
index adf4b7b..e678f95 100644
--- a/src/global.c
+++ b/src/global.c
@@ -121,6 +121,7 @@ void config_default(struct config *conf)
 	conf->process_verbosity		= 0;	// level of additional output
 	conf->warn_on_indented_labels	= TRUE;	// warn if indented label is encountered
 	conf->warn_on_type_mismatch	= FALSE;	// use type-checking system
+	conf->warn_bin_mask		= 3;  // %11 -> warn if not divisible by four
 	conf->max_errors		= MAXERRORS;	// errors before giving up
 	conf->format_msvc		= FALSE;	// enabled by --msvc
 	conf->format_color		= FALSE;	// enabled by --color
diff --git a/src/global.h b/src/global.h
index e6a14ac..b22eb2d 100644
--- a/src/global.h
+++ b/src/global.h
@@ -80,6 +80,7 @@ struct config {
 	int		process_verbosity;	// level of additional output
 	boolean		warn_on_indented_labels;	// warn if indented label is encountered
 	boolean		warn_on_type_mismatch;	// use type-checking system
+	int		warn_bin_mask;	// bitmask for digit counter of binary literals
 	signed long	max_errors;	// errors before giving up
 	boolean		format_msvc;		// enabled by --msvc
 	boolean		format_color;		// enabled by --color