diff --git a/src/las.c b/src/las.c
index 71ac1ca3d4acf53c15529c6c64de1525418d923b..1f957ccfe2f66402c03409916683fc18d384906f 100644
--- a/src/las.c
+++ b/src/las.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: las.c,v 1.94 1999/11/05 01:45:30 grubba Exp $");
+RCSID("$Id: las.c,v 1.95 1999/11/05 17:06:43 grubba Exp $");
 
 #include "language.h"
 #include "interpret.h"
@@ -1967,6 +1967,10 @@ static void optimize(node *n)
 	CAAR(n)=CADR(n)=0;
 	goto use_tmp1;
       }
+      /* 0 || Y  ->  Y */
+      if (node_is_false(CAR(n))) goto use_cdr;
+      /* 1 || Y  ->  1 */
+      if (node_is_true(CAR(n))) goto use_car;
       break;
 
     case F_LAND: 
@@ -1977,6 +1981,10 @@ static void optimize(node *n)
 	CAAR(n)=CADR(n)=0;
 	goto use_tmp1;
       }
+      /* 0 && Y  ->  0 */
+      if (node_is_false(CAR(n))) goto use_car;
+      /* 1 && Y  ->  Y */
+      if (node_is_true(CAR(n))) goto use_cdr;
       break;
 
     case '?':