diff --git a/Test/WackyShifts,ffb b/Test/WackyShifts,ffb
new file mode 100644
index 0000000000000000000000000000000000000000..df7c1a02daef4aea5f5c2d5ea98032be0fcf8f54
Binary files /dev/null and b/Test/WackyShifts,ffb differ
diff --git a/VersionASM b/VersionASM
index d50ca76f46eedb8bbfc84c46dcab86cc4fa9d99e..403a41ad13b43799ee79794833110918baf13e26 100644
--- a/VersionASM
+++ b/VersionASM
@@ -11,13 +11,13 @@
                         GBLS    Module_HelpVersion
                         GBLS    Module_ComponentName
                         GBLS    Module_ComponentPath
-Module_MajorVersion     SETS    "1.95"
-Module_Version          SETA    195
+Module_MajorVersion     SETS    "1.96"
+Module_Version          SETA    196
 Module_MinorVersion     SETS    ""
 Module_Date             SETS    "24 Jul 2016"
 Module_ApplicationDate  SETS    "24-Jul-16"
 Module_ComponentName    SETS    "Debugger"
 Module_ComponentPath    SETS    "castle/RiscOS/Sources/Programmer/Debugger"
-Module_FullVersion      SETS    "1.95"
-Module_HelpVersion      SETS    "1.95 (24 Jul 2016)"
+Module_FullVersion      SETS    "1.96"
+Module_HelpVersion      SETS    "1.96 (24 Jul 2016)"
                         END
diff --git a/VersionNum b/VersionNum
index 85eee569afea3d5e06862b31d00d8ef940292b18..d8e40a4c7c1cae8dab9daf6088c9f7c046985f42 100644
--- a/VersionNum
+++ b/VersionNum
@@ -1,15 +1,15 @@
-/* (1.95)
+/* (1.96)
  *
  * This file is automatically maintained by srccommit, do not edit manually.
  * Last processed by srccommit version: 1.1.
  *
  */
-#define Module_MajorVersion_CMHG        1.95
+#define Module_MajorVersion_CMHG        1.96
 #define Module_MinorVersion_CMHG        
 #define Module_Date_CMHG                24 Jul 2016
 
-#define Module_MajorVersion             "1.95"
-#define Module_Version                  195
+#define Module_MajorVersion             "1.96"
+#define Module_Version                  196
 #define Module_MinorVersion             ""
 #define Module_Date                     "24 Jul 2016"
 
@@ -18,6 +18,6 @@
 #define Module_ComponentName            "Debugger"
 #define Module_ComponentPath            "castle/RiscOS/Sources/Programmer/Debugger"
 
-#define Module_FullVersion              "1.95"
-#define Module_HelpVersion              "1.95 (24 Jul 2016)"
-#define Module_LibraryVersionInfo       "1:95"
+#define Module_FullVersion              "1.96"
+#define Module_HelpVersion              "1.96 (24 Jul 2016)"
+#define Module_LibraryVersionInfo       "1:96"
diff --git a/s/ARM b/s/ARM
index 2216a8c331ed0b2cf4fbda09905bd53726a9ca2c..1912933002c908869b12d0c4ebf049bc2a59f016 100644
--- a/s/ARM
+++ b/s/ARM
@@ -1258,11 +1258,22 @@ Immediate
         BNE     %FT10
         TEQ     r2, #0                  ; but have a non-zero shift ?
         BNE     WackyShift
+        B       %FT20                   ; Unshifted 0-255
 10
-
-;Testing for weird shifts, ie representable numbers as <data><no shift> but are in fact <data><shift>
-;removed
-
+;Testing for weird shifts. There are 1023 duplicate immediates in total, of which 846 are >= 256.
+;
+;Since <data> is 8 bit, and <shift> is encoded divided by 2, there are at most 4 alternate encodings
+;for any immediate before the <data> value encodes some completely different number.
+;eg.     <data << 0><lowest_shift+0>   1  ROR 24 = 256
+;        <data << 2><lowest_shift+1>   4  ROR 26 = 256
+;        <data << 4><lowest_shift+2>   16 ROR 28 = 256
+;        <data << 6><lowest_shift+3>   64 ROR 30 = 256
+;
+;The <lowest_shift> is the preferred one per DDI 0406C, A5.2.4, so that's the one
+;whose <data> has at least one of bits 0-2 set.
+        TST     r4, #3
+        BEQ     WackyShift
+20
         CMPS    r8, #10
         BLO     Rem_Number              ; If really simple, just display number
                                         ; ie. 0..9 unambiguous