For this to work, you'll have to make the following two modifications: 1) In dirichlet.m (in the modsym distribution): In this intrinsic: intrinsic DirichletGroup(m::RngIntElt,R::Rng,z::RngElt,r::RngIntElt) -> GrpDrch {The group of Dirichlet characters mod m with image in the order-r cyclic subgroup of R generated by the root of unity z.} //... modify the require statement like this: if not (Type(R) in {FldLoc, FldPr}) then require z^r eq R!1 : "Argument 3 must have order equal to argument 4."; end if; Now you can happily create characters of giagantic degree, and you don't have to bother with cyclotomic polynomials. 2) In dims.m, replace DimensionCuspForms by the following: intrinsic DimensionCuspForms(eps::GrpDrchElt, k::RngIntElt) -> RngElt {Compute the dimension of the space of cusp forms of weight k and character eps.} require Characteristic(BaseRing(eps)) eq 0 : "The base ring of argument 1 must be of characteristic 0."; requirege k,2; N := Modulus(eps); if IsTrivial(eps) then return S0(N,k); end if; if (IsOdd(eps) and IsEven(k)) or (IsEven(eps) and IsOdd(k)) then return 0; end if; ans := idxG0(N) * (k-1)/12 + CohenOesterle(eps,k); if Type(ans) in {FldRatElt, FldCycElt} then return Integers()!ans; end if; return ans; end intrinsic;