diff --git a/std/more.c b/std/more.c
index e2cf039..3635e88 100644
--- a/std/more.c
+++ b/std/more.c
@@ -89,11 +89,11 @@
   return l;
 }
 
-varargs int eval_command(mixed in, mixed pinfo)
+varargs int eval_command(mixed input, mixed pinfo)
 {
   cprompt = "";
-  if(stringp(in))
-    switch(in)
+  if(stringp(input))
+    switch(input)
     {
     case "?":
       write(MSG_HELP+"\n");
@@ -117,26 +117,26 @@
     default:
     {
       int l;
-      if(l = to_int(in))
+      if(l = to_int(input))
       {
         if(l > pinfo[MAXL] || l < 1) return (cprompt = MSG_ILLEGAL, 0);
         pinfo[CURL] = l;
         break;
       }
-      if(sizeof(in) && in[0] == '/')
+      if(sizeof(input) && input[0] == '/')
       {
-	if(sizeof(in) == 1)
+	if(sizeof(input) == 1)
 	{
 	  if(!pinfo[REGX]) return (cprompt = MSG_NO_REGX, 0);
 	}
-	else pinfo[REGX] = in[1..];
+	else pinfo[REGX] = input[1..];
 	if(l = search(pinfo)) pinfo[CURL] = l;
 	else return (cprompt = MSG_NOT_FOUND, 0);
       }
-      else return ::eval_command(in, pinfo);    
+      else return ::eval_command(input, pinfo);    
       break;
     }
     }
-  else return ::eval_command(in, pinfo);
+  else return ::eval_command(input, pinfo);
   return ::eval_command(-1, pinfo);
 }   
diff --git a/std/util/input.c b/std/util/input.c
index 1e1a6f5..32e909f 100644
--- a/std/util/input.c
+++ b/std/util/input.c
@@ -21,10 +21,10 @@
   input_to("done", INPUT_PROMPT, prompttext, prompt, pargs, ctrl, ctrlargs);
 }
 
-void done(string in, mixed prompt, mixed pargs, mixed ctrl, mixed ctrlargs)
+void done(string input, mixed prompt, mixed pargs, mixed ctrl, mixed ctrlargs)
 {
   if(closurep(ctrl) &&
-     apply(ctrl, ({ in }) + (pointerp(ctrlargs) ? ctrlargs : ({})))) 
+     apply(ctrl, ({ input }) + (pointerp(ctrlargs) ? ctrlargs : ({})))) 
     return;
   input(prompt, pargs, ctrl, ctrlargs);
 }
diff --git a/std/util/pager.c b/std/util/pager.c
index f3219fa..abd5e63 100644
--- a/std/util/pager.c
+++ b/std/util/pager.c
@@ -48,18 +48,18 @@
 }
 
  
-varargs int eval_command(mixed in, mixed pinfo)
+varargs int eval_command(mixed input, mixed pinfo)
 {
   string cprompt, tmp;
   cprompt = "";
-  if(in == "q" || in == "x")
+  if(input == "q" || input == "x")
   {
     if(closurep(pinfo[CTRL])) apply(pinfo[CTRL], pinfo[CARG]);
     return 1;
   }
   else
-    if(!in || (stringp(in) && !sizeof(in))) pinfo[CURL] += pinfo[PAGE];
-    else if(in != -1) return 0;
+    if(!input || (stringp(input) && !sizeof(input))) pinfo[CURL] += pinfo[PAGE];
+    else if(input != -1) return 0;
 
   if(pinfo[CURL] >= pinfo[MAXL]) 
     return (call(pinfo[CTRL], pinfo[CARG]), 1); 
