diff --git a/libraries/base/mm/src/vhdl/mm_latency_adapter.vhd b/libraries/base/mm/src/vhdl/mm_latency_adapter.vhd
index d1a84bda93f63e58b5427dac31e80a3d1bb1b708..4e7815df612b54540321387dbf2fb283ec752076 100644
--- a/libraries/base/mm/src/vhdl/mm_latency_adapter.vhd
+++ b/libraries/base/mm/src/vhdl/mm_latency_adapter.vhd
@@ -56,12 +56,14 @@ END mm_latency_adapter;
 
 ARCHITECTURE str OF mm_latency_adapter IS
 
-  -- Sum of all t_mem_mosi fields widths: 32 + 72 + 1 (wr) + 1 (rd)
-  CONSTANT c_data_w  : NATURAL := c_mem_address_w +  c_mem_data_w + 2;
+  -- Sum of all t_mem_mosi fields widths (synthesis will optimize away unused address and data bits)
+  CONSTANT c_data_w  : NATURAL := c_mem_address_w +  c_mem_data_w + 2;  -- 32 + 72 + 1 (wr) + 1 (rd) = 106
 
+  SIGNAL in_waitrequest  : STD_LOGIC;
   SIGNAL in_data         : STD_LOGIC_VECTOR(c_data_w-1 DOWNTO 0);
   SIGNAL in_val          : STD_LOGIC;
-  SIGNAL in_waitrequest  : STD_LOGIC;
+  SIGNAL in_ready        : STD_LOGIC;
+  SIGNAL out_ready       : STD_LOGIC;
   SIGNAL out_data        : STD_LOGIC_VECTOR(c_data_w-1 DOWNTO 0);
   SIGNAL out_val         : STD_LOGIC;
     
@@ -73,9 +75,14 @@ BEGIN
   p_miso : PROCESS(out_miso, in_waitrequest)
   BEGIN       
     in_miso <= out_miso;
+    --in_miso.rdval <= out_miso.rdval AND NOT in_waitrequest;
     in_miso.waitrequest <= in_waitrequest;
   END PROCESS;
 
+  -- Account for opposite meaning of waitrequest and ready
+  in_waitrequest <= NOT in_ready;
+  out_ready      <= NOT out_miso.waitrequest;
+  
   u_rl : ENTITY common_lib.common_rl_decrease
   GENERIC MAP (
     g_adapt   => g_adapt,
@@ -85,11 +92,11 @@ BEGIN
     rst           => mm_rst,
     clk           => mm_clk,
     -- ST sink: RL = 1
-    snk_out_ready => in_waitrequest,
+    snk_out_ready => in_ready,
     snk_in_dat    => in_data,
     snk_in_val    => in_val,
     -- ST source: RL = 0
-    src_in_ready  => out_miso.waitrequest,
+    src_in_ready  => out_ready,
     src_out_dat   => out_data,
     src_out_val   => out_val
   );