Functions would be more useful in Blitz3d if you could pass multiple parameters to them. The alternative is to create many more types than are necessary to pass your values, or you can hyper-segment your functions so they only work on one value at a time. Either approach will work, but can add needless time and/or potential for bugs. A judiciously used Gosub can make perfect sense under these conditions...