diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Order.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Order.java
index a2f9f24870ae2a875bc3e746e164a04c93049937..e68c67738e1883d87e03fee26ada8cdad948f779 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Order.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Order.java
@@ -575,6 +575,30 @@ public abstract class Order extends RPrecedenceBuiltinNode {
 
         public abstract int executeInt(VirtualFrame frame, Object v, int i, int j, byte naLast);
 
+        @Specialization
+        protected int lcmp(RAbstractLogicalVector v, int i, int j, byte naLast) {
+            byte x = v.getDataAt(i);
+            byte y = v.getDataAt(j);
+            boolean nax = RRuntime.isNA(x);
+            boolean nay = RRuntime.isNA(y);
+            if (nax && nay) {
+                return 0;
+            }
+            if (nax) {
+                return naLast == RRuntime.LOGICAL_TRUE ? 1 : -1;
+            }
+            if (nay) {
+                return naLast == RRuntime.LOGICAL_TRUE ? -1 : 1;
+            }
+            if (x < y) {
+                return -1;
+            }
+            if (x > y) {
+                return 1;
+            }
+            return 0;
+        }
+
         @Specialization
         protected int icmp(RAbstractIntVector v, int i, int j, byte naLast) {
             int x = v.getDataAt(i);
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
index b12913ea87cdcd36b38b11b7524050a3cc0ef1ae..cc9bab4b2ebd28ab9e5ebf5b4e037c9a54c99a4d 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
@@ -34322,6 +34322,10 @@ NULL
 #{ order(c(NA,NA,1), c(2,1,3)) }
 [1] 3 2 1
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_order.testOrder
+#{ order(c(TRUE, FALSE)) }
+[1] 2 1
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_order.testOrder
 #{ order(character()) }
 integer(0)
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_order.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_order.java
index 20fbe944875b6d699668b50c63f627905fb3a936..056d35a41b38d53eb4086c666483077a6ab33845 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_order.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_order.java
@@ -152,6 +152,7 @@ public class TestBuiltin_order extends TestBase {
         assertEval("{ order(c(1,2,3,NA), na.last=FALSE) }");
         assertEval("{ order(c(1,2,3,NA), na.last=FALSE, decreasing=TRUE) }");
         assertEval("{ order(c(0/0, -1/0, 2)) }");
+        assertEval("{ order(c(TRUE, FALSE)) }");
 
         assertEval("{ x<-c(40, 40,  1, 40,  1, 20, 40, 10, 40, 10, 16, 40, 10, 26, 40, 10, 39, 40, 11, 40, 12, 40, 12, 20); order(x, decreasing=TRUE) }");
         assertEval("{ x<-c(40, 40,  1, 40,  1, 20, 40, 10, 40, 10, 16, 40, 10, 26, 40, 10, 39, 40, 11, 40, 12, 40, 12, 20); order(x, decreasing=FALSE) }");