diff --git a/src/dfmt/formatter.d b/src/dfmt/formatter.d
index 630d087..e5c64c2 100644
--- a/src/dfmt/formatter.d
+++ b/src/dfmt/formatter.d
@@ -1038,8 +1038,7 @@ private:
                 writeToken();
                 break;
             }
-            else
-                goto case;
+            goto case;
         case tok!"&":
         case tok!"+":
         case tok!"-":
@@ -1106,6 +1105,7 @@ private:
             break;
         case tok!"&&":
         case tok!"||":
+        case tok!"|":
             regenLineBreakHintsIfNecessary(index);
             goto case;
         case tok!"=":
@@ -1134,7 +1134,6 @@ private:
         case tok!">>>":
         case tok!">>":
         case tok!">":
-        case tok!"|":
         case tok!"!<=":
         case tok!"!<>=":
         case tok!"!<>":
diff --git a/src/dfmt/wrapping.d b/src/dfmt/wrapping.d
index e12936a..41edf2f 100644
--- a/src/dfmt/wrapping.d
+++ b/src/dfmt/wrapping.d
@@ -161,11 +161,12 @@ size_t[] chooseLineBreakTokens(size_t index, const Token[] tokens,
         validMoves!(typeof(open))(open, tokens[0 .. tokensEnd], depths[0 .. tokensEnd],
                 current.breaks, config, currentLineLength, indentLevel);
     }
-    if (open.empty)
-        return genRetVal(lowest.breaks, index);
     foreach (r; open[].filter!(a => a.solved))
         return genRetVal(r.breaks, index);
-    assert(false);
+    if (open[].front < lowest)
+        return genRetVal(open[].front.breaks, index);
+    else
+        return genRetVal(lowest.breaks, index);
 }
 
 void validMoves(OR)(auto ref OR output, const Token[] tokens, immutable short[] depths,
diff --git a/tests/allman/issue0229.d.ref b/tests/allman/issue0229.d.ref
new file mode 100644
index 0000000..9fb768d
--- /dev/null
+++ b/tests/allman/issue0229.d.ref
@@ -0,0 +1,24 @@
+enum
+{
+    SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L,
+    SQL_CA2_LOCK_CONCURRENCY = 0x00000002L,
+    SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L,
+    SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L,
+    SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L,
+    SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L,
+    SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L,
+    // * semantics of SQL_ATTR_MAX_ROWS *
+    SQL_CA2_MAX_ROWS_SELECT = 0x00000080L,
+    SQL_CA2_MAX_ROWS_INSERT = 0x00000100L,
+    SQL_CA2_MAX_ROWS_DELETE = 0x00000200L,
+    SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L,
+    SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L,
+    SQL_CA2_MAX_ROWS_AFFECTS_ALL = (
+            SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | SQL_CA2_MAX_ROWS_DELETE
+            | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG),
+    SQL_CA2_CRC_EXACT = 0x00001000L,
+    SQL_CA2_CRC_APPROXIMATE = 0x00002000L,
+    SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L,
+    SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L,
+    SQL_CA2_SIMULATE_UNIQUE = 0x00010000L
+}
diff --git a/tests/issue0229.d b/tests/issue0229.d
new file mode 100644
index 0000000..265c01b
--- /dev/null
+++ b/tests/issue0229.d
@@ -0,0 +1,22 @@
+enum
+{
+    SQL_CA2_READ_ONLY_CONCURRENCY  = 0x00000001L,
+    SQL_CA2_LOCK_CONCURRENCY       = 0x00000002L,
+    SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L,
+    SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L,
+    SQL_CA2_SENSITIVITY_ADDITIONS  = 0x00000010L,
+    SQL_CA2_SENSITIVITY_DELETIONS  = 0x00000020L,
+    SQL_CA2_SENSITIVITY_UPDATES    = 0x00000040L,
+    // * semantics of SQL_ATTR_MAX_ROWS *
+    SQL_CA2_MAX_ROWS_SELECT        = 0x00000080L,
+    SQL_CA2_MAX_ROWS_INSERT        = 0x00000100L,
+    SQL_CA2_MAX_ROWS_DELETE        = 0x00000200L,
+    SQL_CA2_MAX_ROWS_UPDATE        = 0x00000400L,
+    SQL_CA2_MAX_ROWS_CATALOG       = 0x00000800L,
+    SQL_CA2_MAX_ROWS_AFFECTS_ALL   = (SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG),
+    SQL_CA2_CRC_EXACT              = 0x00001000L,
+    SQL_CA2_CRC_APPROXIMATE        = 0x00002000L,
+    SQL_CA2_SIMULATE_NON_UNIQUE    = 0x00004000L,
+    SQL_CA2_SIMULATE_TRY_UNIQUE    = 0x00008000L,
+    SQL_CA2_SIMULATE_UNIQUE        = 0x00010000L
+}
diff --git a/tests/otbs/issue0229.d.ref b/tests/otbs/issue0229.d.ref
new file mode 100644
index 0000000..bf8a8dc
--- /dev/null
+++ b/tests/otbs/issue0229.d.ref
@@ -0,0 +1,23 @@
+enum {
+    SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L,
+    SQL_CA2_LOCK_CONCURRENCY = 0x00000002L,
+    SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L,
+    SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L,
+    SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L,
+    SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L,
+    SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L,
+    // * semantics of SQL_ATTR_MAX_ROWS *
+    SQL_CA2_MAX_ROWS_SELECT = 0x00000080L,
+    SQL_CA2_MAX_ROWS_INSERT = 0x00000100L,
+    SQL_CA2_MAX_ROWS_DELETE = 0x00000200L,
+    SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L,
+    SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L,
+    SQL_CA2_MAX_ROWS_AFFECTS_ALL = (
+            SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | SQL_CA2_MAX_ROWS_DELETE
+            | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG),
+    SQL_CA2_CRC_EXACT = 0x00001000L,
+    SQL_CA2_CRC_APPROXIMATE = 0x00002000L,
+    SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L,
+    SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L,
+    SQL_CA2_SIMULATE_UNIQUE = 0x00010000L
+}