MotorKnob Tutorial problems

I am using a modified version of the code from the motor knob tutorial in the stepper library with a SHARP GP2Y0A02YK0F IR Proximity Sensor. The extra motors have been added to the code as well as multiple sampling to smooth the sensor reading. I have three questions. One the stepper motor makes a few turns before the motors begin to turn according to the sensor reading. Is there a reason for this and can I eliminate this problem? Two I want to control each motor independently with its own sensor but cant figure out how to add the extra analog pins to the code. I have one sensor on analog pin 0. Three, currently only one motor will come on at a time and the rest of the motors have to wait for it to stop turning in order to start. Is it possible to make them work independently at the same time on one arduino? I will apologize now for the fact that Im fairly new to arduino, but really excited to be here. Thank you in advance for any advice.

The tutorial and schematic is here:

Original Code:

/*
 * MotorKnob
 *
 * A stepper motor follows the turns of a potentiometer
 * (or other sensor) on analog input 0.
 *
 * http://www.arduino.cc/en/Reference/Stepper
 * This example code is in the public domain.
 */

#include <Stepper.h>

// change this to the number of steps on your motor
#define STEPS 100

// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
Stepper stepper(STEPS, 8, 9, 10, 11);

// the previous reading from the analog input
int previous = 0;

void setup()
{
  // set the speed of the motor to 30 RPMs
  stepper.setSpeed(30);
}

void loop()
{
  // get the sensor value
  int val = analogRead(0);

  // move a number of steps equal to the change in the
  // sensor reading
  stepper.step(val - previous);

  // remember the previous value of the sensor
  previous = val;
}

The code I'm using now:

/*
 * MotorKnobMultipleSteppers
 *
 * A stepper motor follows the turns of a potentiometer
 * (or other sensor) on analog input 0, 1, and 2.
 *
 * Origional code this was modified from can be found at 
   http://www.arduino.cc/en/Reference/Stepper
 * This example code is in the public domain.
 */

#include <Stepper.h>

// change this to the number of steps on your motor
#define STEPS 100

// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
Stepper stepper1(STEPS, 1, 3, 2, 4 );
Stepper stepper2(STEPS, 5, 7, 6, 8 );
Stepper stepper3(STEPS, 9, 11, 10, 12 );

// the previous reading from the analog input
int previous = 0;

void setup()
{
  // set the speed of the motor to "X" RPMs
  stepper1.setSpeed(120);
  stepper2.setSpeed(120);
  stepper3.setSpeed(120);
  
}

void loop()
{
  // get the sensor value
  int val = rawAvg(0);

  // move a number of steps equal to the change in the
  // sensor reading
  stepper1.step(val*25 - previous*25);
  stepper2.step(val*25 - previous*25);
  stepper3.step(val*25 - previous*25);

  // remember the previous value of the sensor
  previous = val;
}

// multisample version
// as the sensor is not very steady in its reading 
// doing 32 samples smooths the reading.
unsigned int rawAvg(int pin)
{
  unsigned long raw = 0;
  for (byte i=0; i<32; i++) 
  {
    raw += analogRead(pin);
    //delay(1);
  }
  return raw/32;
}

// running average version
// use of 1024 == 10 bit shift 
//    + configurable ~1/1000
//    + no floats
unsigned int rawRA(int pin)
{
  static unsigned long value = 0;
  unsigned int a = 950;
  value = (a * value + (1024-a) * analogRead(pin)) /1024;
  return (unsigned int) value;
}

Three separate knobs, means tripling some code, time to have a look at arrays - http://www.arduino.cc/en/Tutorial/Array -

/*
 * MotorKnobMultipleSteppers
 *
 * A stepper motor follows the turns of a potentiometer
 * (or other sensor) on analog input 0, 1, and 2.
 *
 * Origional code this was modified from can be found at 
   http://www.arduino.cc/en/Reference/Stepper
 * This example code is in the public domain.
 */

#include <Stepper.h>

// change this to the number of steps on your motor
#define STEPS 100

// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
Stepper stepper1(STEPS, 1, 3, 2, 4 );
Stepper stepper2(STEPS, 5, 7, 6, 8 );
Stepper stepper3(STEPS, 9, 11, 10, 12 );

// the previous reading from the analog input
int previous0 = 0;
int previous1 = 0;
int previous2 = 0;

void setup()
{
  // set the speed of the motor to "X" RPMs
  stepper1.setSpeed(120);
  stepper2.setSpeed(120);
  stepper3.setSpeed(120);
  
}

void loop()
{
  // get the sensor value
  int val0 = rawAvg(0);
  int val1 = rawAvg(1);
  int val2 = rawAvg(2);

  // move a number of steps equal to the change in the
  // sensor reading
  stepper1.step(val0 * 25 - previous0 * 25);
  stepper2.step(val1 * 25 - previous1 * 25);
  stepper3.step(val2 * 25 - previous2 * 25);

  // remember the previous value of the sensor
  previous0 = val0;
  previous1 = val1;
  previous2 = val2;
}

// multisample version
// as the sensor is not very steady in its reading 
// doing 32 samples smooths the reading.
unsigned int rawAvg(int pin)
{
  unsigned long raw = 0;
  for (byte i=0; i<32; i++) 
  {
    raw += analogRead(pin);
    //delay(1);
  }
  return raw/32;
}

// running average version
// use of 1024 == 10 bit shift 
//    + configurable ~1/1000
//    + no floats
unsigned int rawRA(int pin)
{
  static unsigned long value = 0;
  unsigned int a = 950;
  value = (a * value + (1024-a) * analogRead(pin)) /1024;
  return (unsigned int) value;
}