diff --git a/xtrn/tw2/computer.js b/xtrn/tw2/computer.js
index 3020d8ffec99a929e048b5e92e8c8ce4fdacae48..8aba6b24aa879b406770692fdcfb3526ec9dbcce 100644
--- a/xtrn/tw2/computer.js
+++ b/xtrn/tw2/computer.js
@@ -25,7 +25,7 @@ function ComputerMenu()
 			case '2':
 				/* 33780 */
 				console.write("What sector number is the port in? ");
-				var sec=console.getnum(sectors.length-1);
+				var sec=InputFunc([{min:0,max:sectors.length-1}]);
 				if(sec > 0 && sec < sectors.length) {
 					var sector=sectors.Get(sec);
 					if(sector.Port==0 || (sector.Fighters>0 && sector.Fighters!=player.Record)) {
@@ -44,7 +44,7 @@ function ComputerMenu()
 			case '3':
 				/* 33830 */
 				console.write("What sector do you want to get to? ");
-				var sec=console.getnum(sectors.length-1);
+				var sec=InputFunc([{min:0,max:sectors.length-1}]);
 				if(sec > 0 && sec < sectors.length) {
 					if(sec==player.Sector) {
 						console.writeln("You are in that sector.");
diff --git a/xtrn/tw2/input.js b/xtrn/tw2/input.js
index c0da611607f1595d3d72bef16a71b867270ebe40..0c38da55235d1b4ff28509f9c1d1cedf192d2489 100644
--- a/xtrn/tw2/input.js
+++ b/xtrn/tw2/input.js
@@ -6,6 +6,36 @@ try {
 }
 catch (e) {}
 
+function CheckNode()
+{
+	/* Node status check */
+	var newmisc=system.node_list[bbs.node_num-1].misc;
+	var newstatus=system.node_list[bbs.node_num-1].status;
+	if(newmisc != lastmisc || newstatus != laststatus) {
+		console.saveline();
+		bbs.nodesync();
+		console.write("\r");
+		if(console.line_counter!=0) {
+			console.crlf();
+			console.line_counter=0;
+		}
+		console.restoreline();
+		lastmisc=system.node_list[bbs.node_num-1].misc;
+		laststatus=system.node_list[bbs.node_num-1].status;
+	}
+}
+
+function CheckTime()
+{
+	/* Time Check */
+	if((player.TimedUsed + (time()-on_at)) > (Settings.MaxTime*60)) {
+		console.crlf()
+		console.crlf()
+		console.writeln("You are out of time for today");
+		exit(0);
+	}
+}
+
 function InputFunc(values)
 {
 	var str='';
@@ -19,28 +49,8 @@ function InputFunc(values)
 	console.attributes="N";
 InputFuncMainLoop:
 	for(;;) {
-		/* Node status check */
-		var newmisc=system.node_list[bbs.node_num-1].misc;
-		var newstatus=system.node_list[bbs.node_num-1].status;
-		if(newmisc != lastmisc || newstatus != laststatus) {
-			console.saveline();
-			bbs.nodesync();
-			console.write("\r");
-			if(console.line_counter!=0) {
-				console.crlf();
-				console.line_counter=0;
-			}
-			console.restoreline();
-			lastmisc=system.node_list[bbs.node_num-1].misc;
-			laststatus=system.node_list[bbs.node_num-1].status;
-		}
-		/* Time Check */
-		if((player.TimedUsed + (time()-on_at)) > (Settings.MaxTime*60)) {
-			console.crlf()
-			console.crlf()
-			console.writeln("You are out of time for today");
-			exit(0);
-		}
+		CheckNode();
+		CheckTime();
 
 		key=console.inkey(100);
 		if(key == '') {
diff --git a/xtrn/tw2/planets.js b/xtrn/tw2/planets.js
index 0d6685fcd9f49a49fa1f01450770b445e70f1fb4..2803b7dd1cb8a3ee1b9d5e38af77ee226b30e474 100644
--- a/xtrn/tw2/planets.js
+++ b/xtrn/tw2/planets.js
@@ -288,7 +288,7 @@ function PlanetIncreaseProd(planet)
 		if(planet.Production[keynum]+max > 19)
 			max=20-planet.Production[keynum];
 		console.write(Commodities[keynum].name+": Increase by how many units? ");
-		var incr=console.getnum(max);
+		var incr=InputFunc([{min:0,max:max}]);
 		if(incr > 0 && incr <= max) {
 			player.Credits -= incr*Commodities[keynum].price*20;
 			planet.Production[keynum]+=incr;
@@ -306,7 +306,7 @@ function PlanetTakeCommodity(planet, commodity, freeholds)
 		max=parseInt(planet.Commodities[commodity]);
 	console.writeln("<Take "+Commodities[commodity].name.toLowerCase()+">");
 	console.write("How much [" + max + "]? ");
-	var take=console.getnum(max);
+	var take=InputFunc([{min:0,max:max}]);
 	if(take > max) {
 		console.writeln("They don't have that many.");
 		return(freeholds);
diff --git a/xtrn/tw2/players.js b/xtrn/tw2/players.js
index 792337dfd929bde6dedefe31eb886b5bbb9e6a80..3b5f89d00bbf4f2435de8f2228f7b048b4084820 100644
--- a/xtrn/tw2/players.js
+++ b/xtrn/tw2/players.js
@@ -230,7 +230,7 @@ function PlayerGamble()
 	console.writeln("You have "+player.Credits+" credits.");
 	console.writeln("How much do you want to gamble at double or nothing (50-50 odds)");
 	console.write("[0]? ");
-	var gamble=console.getnum(player.Credits > 99999?99999:player.Credits);
+	var gamble=InputFunc([{min:0,max:(player.Credits > 99999?99999:player.Credits)}]);
 	if(gamble > 0 && gamble <=player.Credits) {
 		console.write("Flipping the coin...");
 		mswait(250);
@@ -329,8 +329,10 @@ function RankPlayers()
 		var robj=new Object();
 		robj.Record=p.Record;
 		robj.Score=p.Fighters*100 + p.Holds*500 + p.Credits;
-		for(i=0; i<Commodities.length; i++)
-			robj.Score += Commodities[i].price*p.Commodities[i];
+
+		var j;
+		for(j=0; j<Commodities.length; j++)
+			robj.Score += Commodities[j].price*p.Commodities[j];
 		if(fighters[i]!=undefined)
 			robj.Score += fighters[i]*100;
 		rank.push(robj);
@@ -347,7 +349,7 @@ function RankPlayers()
 function TWRank()
 {
 	var rf=new File(fname(Settings.TopTenFile));
-	rf.open("w");
+	rf.open("w", true);
 	rf.writeln();
 	rf.writeln("  T R A D E W A R S   I I - 500T   S C O R E B O A R D  ");
 	rf.writeln();
@@ -404,7 +406,7 @@ function DoBattle(opp, otherteam)
 	}
 	else {
 		console.write("How many fighters do you wish to use? ");
-		var use=console.getnum(player.Fighters);
+		var use=InputFunc([{min:0,max:player.Fighters}]);
 
 		if(use > 0 && use <= player.Fighters) {
 			var lost=0;
@@ -703,7 +705,7 @@ function Dropfighters()
 	var newf=player.Fighters+sector.Fighters;
 	if(newf > 9999)
 		newf=9999;
-	var newf=console.getnum(newf);
+	var newf=InputFunc([{min:0,max:newf}]);
 	if(newf >= 0 && newf <=player.Fighters+sector.Fighters) {
 		if((player.Fighters+sector.Fighters)-newf > 9999) {
 			console.writeln("Too many ships in your fleet!  You are limited to 9999");
diff --git a/xtrn/tw2/ports.js b/xtrn/tw2/ports.js
index 6d09a477cb74fff1233e6dfacc88944f46bcd4b7..2a2475a5fc643fe824a2ef0f34646d45d413388e 100644
--- a/xtrn/tw2/ports.js
+++ b/xtrn/tw2/ports.js
@@ -86,7 +86,7 @@ function DockAtSol()
 		maxbuy=50-player.Holds;
 	if(maxbuy > 0) {
 		console.write("How many holds do you want to buy [0]? ");
-		var buy=console.getnum(maxbuy);
+		var buy=InputFunc([{min:0,max:maxbuy}]);
 		if(buy>0) {
 			player.Holds+=buy;
 			player.Credits -= buy*prices[0];
@@ -100,7 +100,7 @@ function DockAtSol()
 		maxbuy=9999-player.Fighters;
 	if(maxbuy > 0) {
 		console.write("How many fighters do you want to buy [0]? ");
-		var buy=console.getnum(maxbuy);
+		var buy=InputFunc([{min:0,max:maxbuy}]);
 		if(buy>0) {
 			player.Fighters+=buy;
 			player.Credits -= buy*prices[1];
@@ -112,7 +112,7 @@ function DockAtSol()
 	var maxbuy=parseInt(player.Credits/prices[2]);
 	if(maxbuy > 0) {
 		console.write("How many turns do you want to buy [0]? ");
-		var buy=console.getnum(maxbuy);
+		var buy=InputFunc([{min:0,max:maxbuy}]);
 		if(buy>0) {
 			player.TurnsLeft+=buy;
 			player.Credits -= buy*prices[2];
@@ -260,7 +260,7 @@ function Transact(type, price, vary, avail)
 	console.writeln("We are "+weare+"ing up to "+avail+".  You have "+player.Commodities[type]+" in your holds.");
 
 	console.write("How many holds of "+Commodities[type].name.toLowerCase()+" do you want to "+youare+" ["+max+"]? ");
-	var amount=console.getnum(max,max);
+	var amount=InputFunc([{min:0,max:max,def:max}]);
 
 	if(amount>0 && amount<=max) {
 		var done=false;
@@ -276,7 +276,7 @@ function Transact(type, price, vary, avail)
 			offer=0;
 			while(offer==0) {
 				console.write("Your offer? ");
-				offer=console.getnum(buy?player.Credits:(price*amount*10));
+				offer=InputFunc([{min:0,max:(buy?player.Credits:(price*amount*10))}]);
 				if(offer==0)
 					break;
 				if(offer < price*amount/10 || offer > price*amount*10) {
diff --git a/xtrn/tw2/teams.js b/xtrn/tw2/teams.js
index 015839ea6c41ab74a05a023c15f0761b34d7c17f..189f1e95e6755e59c134ab5109035171d229f871 100644
--- a/xtrn/tw2/teams.js
+++ b/xtrn/tw2/teams.js
@@ -147,7 +147,7 @@ function JoinTeam()
 	}
 
 	console.write("What Team number do you wish to join (0=quit)? ");
-	var tnum=console.getnum(teams.length-1);
+	var tnum=InputFunc([{min:0,max:(teams.length-1)}]);
 	if(!(tnum > 0 && tnum < teams.length))
 		return(false);
 
@@ -250,7 +250,7 @@ function TeamTransfer(type)
 		console.writeln("You have" + player[type] + " "+type.toLowercase()+".");
 		console.writeln(otherplayer.Alias + " has" + otherplayer[type] + " "+type.toLowercase()+".");
 		console.write("How many "+type+" do you wish to Transfer? ");
-		var transfer=console.getnum(player[type]);
+		var transfer=InputFunc([{min:0,max:player[type]}]);
 		if(transfer<1 || transfer > player[type])
 			return(false);
 		if(type=="Credits") {