}
        *slot_runtime = timespec_elapsed(tstart);
 
-       for (slot = 0, guest_addr = MEM_GPA; slot < data->nslots; slot++) {
+       for (slot = 1, guest_addr = MEM_GPA; slot <= data->nslots; slot++) {
                uint64_t npages;
                uint64_t gpa;
 
                npages = data->pages_per_slot;
-               if (slot == data->nslots - 1)
+               if (slot == data->nslots)
                        npages += rempages;
 
-               gpa = vm_phy_pages_alloc(data->vm, npages, guest_addr,
-                                        slot + 1);
+               gpa = vm_phy_pages_alloc(data->vm, npages, guest_addr, slot);
                TEST_ASSERT(gpa == guest_addr,
                            "vm_phy_pages_alloc() failed\n");
 
-               data->hva_slots[slot] = addr_gpa2hva(data->vm, guest_addr);
-               memset(data->hva_slots[slot], 0, npages * 4096);
+               data->hva_slots[slot - 1] = addr_gpa2hva(data->vm, guest_addr);
+               memset(data->hva_slots[slot - 1], 0, npages * 4096);
 
                guest_addr += npages * 4096;
        }