--- a/libs4c/spi/spi_lpcssp.c
+++ b/libs4c/spi/spi_lpcssp.c
@@ -222,7 +222,7 @@
         if(msg->rx_buf && (rxcnt < rq_len)) {
           msg->rx_buf[rxcnt++] = dr;
           if(data16_fl)
-            msg->rx_buf[rxcnt++] = dr >> 16;
+            msg->rx_buf[rxcnt++] = dr >> 8;
         }
       }
 
@@ -234,7 +234,7 @@
         if(msg->tx_buf) {
           dr = msg->tx_buf[txcnt++];
           if(data16_fl)
-            dr |= msg->rx_buf[txcnt++] << 8;
+            dr |= msg->tx_buf[txcnt++] << 8;
         } else {
           txcnt += data16_fl? 2: 1;
         }