code: function(rc, outputStream) {
          while (rc.range <= Bottom_value) { /* do we need renormalization? */
              if (rc.low < (0xFF << SHIFT_BITS)) {//no carry possible, so output
                  outputStream.writeByte(rc.buffer);
                  for (; rc.help; rc.help--)
                      outputStream.writeByte(0xFF);
                  rc.buffer = (rc.low >>> SHIFT_BITS) & 0xFF;
              } else if (rc.low & Top_value) { /* carry now, no future carry */
                  outputStream.writeByte(rc.buffer+1);
                  for (; rc.help; rc.help--)
                      outputStream.writeByte(0x00);
                  rc.buffer = (rc.low >>> SHIFT_BITS) & 0xFF;
              } else {
                  rc.help++;
                  if (rc.help > MAX_INT)
                      throw new Error("Too many bytes outstanding, "+
                                      "file too large!");
              }
              rc.range = (rc.range << 8) >>> 0;/*ensure result remains positive*/
              rc.low = ((rc.low << 8) & (Top_value - 1)) >>> 0; /* unsigned */
              rc.bytecount++;
          }
      }
docs: /* Do the normalization before we need a defined state, instead of
  after messing it up.  This simplifies starting and ending.