RoboMat, that did not fix the error, but it does raise questions that will probably get me there. But first, I discovered something fascinating. Having the Coordinate Viewer mod enabled makes the numbers involved very, very different. With Coordinate Viewer wX = 11640 wY = 6611 Without Coordinate Viewer, same code, player beginning in the exact same spot wX = 370 wY = 18 Could I possibly be running into some name collision between the mods, or does this mean Coordinate Viewer changes the behaviour of ISCoordConversion.ToWorld()? Anyway, even though the modulo-by-300 of those numbers is quite different, the result is the same: gridSquare is still nil. So your answer implies that an IsoCell is a section of the map which is 300 x 300 IsoGridSquares. If so, then calling getWorld():getCell() during OnGameStart does what, gets the cell that the player is currently in? This wouldn't explain why getGridSquare() still wouldn't work with coordinates that are less than 300, but it does mean I'm probably going about this the wrong way. A later milestone is to randomly choose, from a list of say five or six fixed locations, two or three at the beginning of a game. A boat will appear at each of those. Rather than directly planting boats in OnGameStart, should I be doing the choosing and the math in some one-time event (OnInitWorld, maybe?), storing the results, then testing each time the player enters a new cell (OnPostMapLoad, maybe?) whether that cell contains a boat and plant it at the correct cell-relative coordinates?