public LispValue eql(LispValue val)
  {
    if (val instanceof LispBignum)
      if (value.equals(((LispBignum)val).getBigIntegerValue()))
        return T;
      else
        return NIL;

    if (val instanceof LispInteger)
    {
      LispBignum n = bignum(((LispInteger)val).getLongValue());
      if (value.equals(n.getBigIntegerValue()))
        return T;
      else
        return NIL;
    }

    if (val instanceof LispReal)
    {
      LispReal r = ((LispReal)val);

      if (StrictMath.round(r.getDoubleValue()) != r.getDoubleValue())  // If not integral
        return NIL;

      LispBignum n = bignum(r.getDoubleValue());
      if (value.equals(n.getBigIntegerValue()))
        return T;
      else
        return NIL;
    }


    return super.eql(val);
  }