diff --git a/Makefile.am b/Makefile.am
index e4d5473..735efd8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -86,6 +86,9 @@
 test_invalid_command_SOURCES = test/invalid_command.c \
 			     $(TEST_MBOX_SRCS) $(TEST_MOCK_SRCS)
 
+test_read_window_cycle_SOURCES = test/read_window_cycle.c \
+			     $(TEST_MBOX_SRCS) $(TEST_MOCK_SRCS)
+
 check_PROGRAMS = test/sanity \
 		 test/copy_flash \
 		 test/erase_flash \
@@ -109,6 +112,7 @@
 		 test/read_window_write_flush \
 		 test/read_window_mark_write_erased \
 		 test/write_window_dirty_erase \
-		 test/invalid_command
+		 test/invalid_command \
+		 test/read_window_cycle
 
 TESTS = $(check_PROGRAMS)
diff --git a/test/read_window_cycle.c b/test/read_window_cycle.c
new file mode 100644
index 0000000..e1d1b48
--- /dev/null
+++ b/test/read_window_cycle.c
@@ -0,0 +1,90 @@
+/*
+ * MBox Daemon Test File
+ *
+ * Copyright 2017 IBM
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <assert.h>
+
+#include "mbox.h"
+#include "mboxd_msg.h"
+
+#include "test/mbox.h"
+#include "test/system.h"
+
+static const uint8_t get_info[] = {
+	0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t create_read_window_block_0[] = {
+	0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t create_read_window_block_1[] = {
+	0x04, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t create_read_window_block_2[] = {
+	0x04, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+uint8_t data[] = { 0x00, 0x01, 0x02 };
+
+#define MEM_SIZE	sizeof(data)
+#define ERASE_SIZE	1
+#define N_WINDOWS	MEM_SIZE - 1
+#define WINDOW_SIZE	1
+
+int main(void)
+{
+	struct mbox_context *ctx;
+	int rc;
+	int i;
+
+	system_set_reserved_size(N_WINDOWS);
+	system_set_mtd_sizes(MEM_SIZE, ERASE_SIZE);
+
+	ctx = mbox_create_test_context(N_WINDOWS, WINDOW_SIZE);
+	rc = mbox_set_mtd_data(ctx, data, sizeof(data));
+	assert(rc == 0);
+
+	rc = mbox_command_dispatch(ctx, get_info, sizeof(get_info));
+	assert(rc == 1);
+
+	/* Make each block appear in each window */
+	for (i = 0; i < 2; i++) {
+		rc = mbox_command_dispatch(ctx, create_read_window_block_0,
+				sizeof(create_read_window_block_0));
+		assert(rc == 1);
+		assert(((uint8_t *)ctx->mem)[(0 + i) & 1] == data[0]);
+
+		rc = mbox_command_dispatch(ctx, create_read_window_block_1,
+				sizeof(create_read_window_block_1));
+		assert(rc == 1);
+		assert(((uint8_t *)ctx->mem)[(1 + i) & 1] == data[1]);
+
+		rc = mbox_command_dispatch(ctx, create_read_window_block_2,
+				sizeof(create_read_window_block_2));
+		assert(rc == 1);
+		assert(((uint8_t *)ctx->mem)[(2 + i) & 1] == data[2]);
+	}
+
+	return !(rc == 1);
+};
