diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 1.2.6.5
+
+* In zipConduitApp, left bias not respected mixing monadic and non-monadic conduits [#263](https://github.com/snoyberg/conduit/pull/263)
+
 ## 1.2.6.4
 
 * Fix benchmark by adding a type signature
diff --git a/Data/Conduit/Internal/Conduit.hs b/Data/Conduit/Internal/Conduit.hs
--- a/Data/Conduit/Internal/Conduit.hs
+++ b/Data/Conduit/Internal/Conduit.hs
@@ -540,6 +540,8 @@
     -> ConduitM i o m y
 zipConduitApp (ConduitM left0) (ConduitM right0) = ConduitM $ \rest -> let
     go _ _ (Done f) (Done x) = rest (f x)
+    go finalX finalY (PipeM mx) y = PipeM (flip (go finalX finalY) y `liftM` mx)
+    go finalX finalY x (PipeM my) = PipeM (go finalX finalY x `liftM` my)
     go _ finalY (HaveOutput x finalX o) y = HaveOutput
         (go finalX finalY x y)
         (finalX >> finalY)
@@ -550,8 +552,6 @@
         o
     go _ _ (Leftover _ i) _ = absurd i
     go _ _ _ (Leftover _ i) = absurd i
-    go finalX finalY (PipeM mx) y = PipeM (flip (go finalX finalY) y `liftM` mx)
-    go finalX finalY x (PipeM my) = PipeM (go finalX finalY x `liftM` my)
     go finalX finalY (NeedInput px cx) (NeedInput py cy) = NeedInput
         (\i -> go finalX finalY (px i) (py i))
         (\u -> go finalX finalY (cx u) (cy u))
diff --git a/conduit.cabal b/conduit.cabal
--- a/conduit.cabal
+++ b/conduit.cabal
@@ -1,5 +1,5 @@
 Name:                conduit
-Version:             1.2.6.4
+Version:             1.2.6.5
 Synopsis:            Streaming data processing library.
 description:
     Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/conduit>.
diff --git a/test/Data/Conduit/Extra/ZipConduitSpec.hs b/test/Data/Conduit/Extra/ZipConduitSpec.hs
--- a/test/Data/Conduit/Extra/ZipConduitSpec.hs
+++ b/test/Data/Conduit/Extra/ZipConduitSpec.hs
@@ -24,3 +24,11 @@
             sink = CL.consume
         res <- src $$ conduit =$ sink
         res `shouldBe` [2, 1, 1, 3, 2, 2, 4, 3, 3, 12]
+    it "ZipConduitMonad" $ do
+        let src = mapM_ yield [1..3 :: Int]
+            conduit1 = CL.mapM (pure . (+1))
+            conduit2 = CL.map id
+            conduit = getZipConduit $ ZipConduit conduit1 <* ZipConduit conduit2
+            sink = CL.consume
+        res <- src $$ conduit =$ sink
+        res `shouldBe` [2, 1, 3, 2, 4, 3]
