To accurately predict the light collection from a scintillating crystal through Monte Carlo simulations, it is crucial to know the angular distribution from the surface reflectance. Current Monte Carlo codes allow the user to set the optical reflectance to a linear combination of backscatter spike, specular spike, specular lobe, and Lambertian reflections. However, not all light distributions can be expressed in this way. In addition, the user seldom has the detailed knowledge about the surfaces that is required for accurate modeling. We have previously measured the angular distributions within BGO crystals and now incorporate these data as look-up-tables (LUTs) into modified Geant4 and GATE Monte Carlo codes. The modified codes allow the user to specify the surface treatment (ground, etched, or polished), the attached reflector (Lumirror®, Teflon®, ESR film, Tyvek®, or TiO paint), and the bonding type (air-coupled or glued). Each LUT consists of measured angular distributions with 4 by 5 resolution in theta and phi, respectively, for incidence angles from 0 to 90 degrees, in 1 -steps. We compared the new codes to the original codes by running simulations with a BGO crystal coupled to a PMT. The simulations were then compared to measurements. Light output was measured by counting the photons detected by the PMT with the 3 10, 3 30, or side coupled to the PMT, respectively. Our new code shows better agreement with the measured data than the current Geant4 code. The new code can also simulate reflector materials that are not pure specular or Lambertian reflectors, as was previously required. Our code is also more user friendly, as no detailed knowledge about the surfaces or light distributions is required from the user.