*            a default value or Float.NaN
	 * @return one of the above possibilities
	 * @throws ScriptException
	 */
	float radiusParameter(int index, float defaultValue) throws ScriptException {
		if (index >= statementLength)
			badArgumentCount();
		float v = Float.NaN;
		boolean isOffset = (statement[index].tok == Token.plus);
		if (isOffset)
			index++;
		boolean isPercent = (index + 1 < statementLength && statement[index + 1].tok == Token.percent);
		int tok = (index < statementLength ? statement[index].tok : 0);
		switch (tok) {
		case Token.integer:
			v = statement[index].intValue;
		case Token.decimal:
			if (Float.isNaN(v))
				v = ((Float) statement[index].value).floatValue();
			if (v < 0)
				isOffset = true;
			break;
		default:
			v = defaultValue;
			index--;
		}
		pcLastExpressionInstruction = index + (isPercent ? 1 : 0);
		if (Float.isNaN(v))
			numberExpected();
		if (v == 0)
			return 0;
		if (isPercent) {
			if (v <= -100)
				invalidArgument();
			v += (isOffset ? 200 : 100);
		}
		else if (isOffset) {
		}
		else {
			if (v < 0 || v > 10)
				numberOutOfRange(0f, 10f);
			v += 10;
		}
		return v;
	}