Can't access ICR1 on Mega 2560

I’ve been programming an Uno and I found that I needed more 16-bit timers, so I got a Mega 2560. I took my Uno code and made changes for different pin assignments. However, there seemed to be an issue with Timer1. I progressively stripped down my code and finally found that ICR1 isn’t being set. Also notice that OCR1A is incorrectly set (should be 2200). Sample output follows the code listing.

By now I’ve looked at this code so much that I just can’t see the problem.

///////////// Arduino Mega Candidate for Quad Duty ///////////////////////////////////////////
//  PirateQuadRecruit  Version_1 in process as of 3/5/2013
//
//  Objective: Use the Arduino Mega 2560 to control the KK 2.0 Flight Controller
//             [needed more 16-bit timers than available on Uno]
//
//     1/10/2013 - Initial integration of various test routines
//     1/25/2013 - Synchronizing sonar readings with throttle updates
//     3/08/2013 - Renamed "Pirate" to show code origin
//               - Updated for use with Arduino Mega 2560
//        
///////////////////////////////////////////////////////////////////////////////////////////////
  //
  #include <avr/io.h>
  #include <avr/interrupt.h>
  //
  /////// Throttle definitions ////////////////////////////////////////////////////////////////
  //
  #define PULSE_MAX           1900        // full throttle -- range must be 800
  #define PULSE_MID           1500        //
  #define PULSE_MIN           1100        //
  //
  #define THRO_PIN_OUT        11          //
  #define THRO_PIN_IN         A8          // 
  // 
  uint32_t millisCurrent;
  uint32_t millisLongLoop;
  //
  ///////////// throttle controls /////////////////////////////////////////////////////////////
  //
  volatile uint16_t receiverPulseCount    = 0;        // counts 20ms cycles -- used as a timer
  volatile uint16_t throttlePulseIn       = 0;        // current throttle pulse length
  volatile uint16_t throttlePulseRaw      = 0;        // throttle pulse before adjustments
  //
  ///////////// setup inputs /////////////////////////////////////////////////////////////////
  //
  #define ENABLE_PINS_23_16      PCICR|=(1<<PCIE2)
  #define ENABLE_THRO_IN         PCMSK2|=(1<<PCINT16)
  //
  void enableInputPins()
  { cli();
    ENABLE_PINS_23_16;
    ENABLE_THRO_IN;
    sei();
  }
  ///////////// setup output timers /////////////////////////////////////////////////////////////
  //
  void startOutputTimers()
  { cli();
    //
    pinMode(THRO_PIN_OUT,OUTPUT);
    //
    TCCR1A  |=  (1<<WGM11);                      // fast PWM, TOP=ICR
    TCCR1B  |= ((1<<WGM13)|(1<<WGM12));          // 
    TCCR1A  |=  (1<<COM1A1);                     // clear on Compare Match, set at BOTTOM
    OCR1A    =  PULSE_MIN*2;                     // set THRO to minimum
    ICR1     =  40000;                           // (16,000,000/8)/50Hz=40,000
    TCCR1B  |= (1<<CS11);                        // set the prescaler to 8
    //
    sei();
  }
  //////////// process Throttle Input on pin A8 ///// ///////////////////////////////////////
  //
  ISR(PCINT2_vect, ISR_BLOCK)
  { static uint16_t throttlePulseStart;
    static uint16_t throttlePulseEnd;
    //
    if (PINK & (1<<PINK0))                   // start of throttle pulse
    { throttlePulseStart = micros();         // start measuring pulse length
      return;                                // 
    }
    receiverPulseCount++;                    // count this pulse
    throttlePulseRaw = micros() - throttlePulseStart;                    // get the pulse length
    throttlePulseIn  = constrain(throttlePulseRaw,PULSE_MIN,PULSE_MAX);  // adjust
    //
    OCR1A = throttlePulseIn*2;              // set compare match value
  }
  //////////////// display readings ////////////////////////////////////////
  //
  void logDisplay() 
  { Serial.print("Pulses: ");
    Serial.print(receiverPulseCount);
    Serial.print("/");
    Serial.print(throttlePulseRaw);
    Serial.print("/");
    Serial.print(throttlePulseIn);
    Serial.print("/");
    Serial.print(ICR1);
    Serial.print("/");
    Serial.print(OCR1A);
    Serial.println("");
  }
  ///////////////  SETUP  //////////////////////////////////////////////////
  void setup()
  { Serial.begin(57600);
    enableInputPins();
    startOutputTimers;
    millisLongLoop   = millis();
  }
  ///////////////  MAIN LOOP  //////////////////////////////////////////////
  void loop()
  { millisCurrent = millis();
    //
    //-- long loop runs at about 10hz -------------------------------------
    if ((millisCurrent-millisLongLoop) >= 100)
       { millisLongLoop = millisCurrent;
         //
         logDisplay();
       }
  }
///////////// the end //////////////////////////////////////////////////////

SAMPLE OUTPUT: ICR1 is not set?!

Pulses: 4/1084/1100/0/152
Pulses: 9/1084/1100/0/152
Pulses: 13/1084/1100/0/152
Pulses: 18/1084/1100/0/152
Pulses: 23/1084/1100/0/152
Pulses: 27/1084/1100/0/152
Pulses: 32/1084/1100/0/152