diff --git a/Control/Arrow/State.hs b/Control/Arrow/State.hs
--- a/Control/Arrow/State.hs
+++ b/Control/Arrow/State.hs
@@ -37,6 +37,15 @@
   StateT f <+> StateT g = StateT (f <+> g);
 };
 
+instance (ArrowChoice r) => ArrowChoice (StateT s r) where {
+  left (StateT x) = StateT $ let {
+                      f (Left  x, s) = Left  (x, s);
+                      f (Right y, s) = Right (y, s);
+                      g (Left  (x, s)) = (Left  x, s);
+                      g (Right (y, s)) = (Right y, s);
+                    } in arr f >>> left x >>> arr g;
+};
+
 instance (ArrowLoop r) => ArrowLoop (StateT s r) where {
   loop = StateT . loop . (>>> swap_snds_A) . (<<< swap_snds_A) . runStateT;
 };
diff --git a/atl.cabal b/atl.cabal
--- a/atl.cabal
+++ b/atl.cabal
@@ -1,5 +1,5 @@
 Name:atl
-Version:15409.1
+Version:15409.2
 Description:Arrow Transformer Library
 License:LGPL
 License-File:license.txt
