The
pick screen command requires that you specify a distance perimeter, yet because your camera isn't orthographic you don't know the exact distance from the camera to your ground object (at that screen location). The location you clicked was farther away than the distance value you passed to
pick screen. Greater distance means larger values for the X and Z components of the resulting vector. I'm terrible at explaining this kind of thing, but I've attached an image which hopefully illustrates the issue.
That aside, the
pick screen command wasn't intended for this kind of thing. Try using
Pick Object() instead and you will have better luck.
hit = Pick object( mouseX() , mouseY() , GroundObjID , GroundObjID )
if hit
posX#= get pick vector X() + camera position X()
posY#= get pick vector Y() + camera position Y()
posZ#= get pick vector Z() + camera position Z()
`position your object at the resulting coordinates
endif