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); 
