NaN has lots of weird side-effects. Like if you set an object's X, Y, width, height or angle to NaN, it disappears (because it fails the is-in-viewport check). This can be confusing and difficult to debug, so I'd rather not create another way to introduce NaN numbers in to the engine. I think 0 makes more sense than -1 as well, since 0 means "nothing" whereas -1 could arguably mean "something", and there ought to be nothing if you access a value outside the array.