*** c68dist/expr.c	Tue Mar 27 09:29:14 1990
--- c68/expr.c	Tue Mar 27 09:33:25 1990
***************
*** 971,978 ****
  	    ep1 = mk_node(en_div, ep1, ep2);
  	    ep1->etype = bt_long;
  	    ep1->esize = 4;
  	    *node = ep1;
- 	    tp1 = &tp_long;
  	    continue;
  	}
  	if (tp1->type == bt_pointer) {
--- 971,986 ----
  	    ep1 = mk_node(en_div, ep1, ep2);
  	    ep1->etype = bt_long;
  	    ep1->esize = 4;
+ 	    /*
+ 	     * In 16-bit mode, cast the result to ,,short'' because
+ 	     * K&R says that pointer subtraction yields an int result
+ 	     */
+ 	    if (short_option) {
+ 		cast_op(&ep1,&tp_long,&tp_short);
+ 		tp1 = &tp_short;
+ 	    } else
+ 		tp1 = &tp_long;
  	    *node = ep1;
  	    continue;
  	}
  	if (tp1->type == bt_pointer) {
