diff --git a/lalapps/src/inspiral/inspinj.c b/lalapps/src/inspiral/inspinj.c
index b06b27ea29e695f3855829fb3ea954d8f616f228..b4cc7d43d071105d4378c09cc6f3a075f8394328 100644
--- a/lalapps/src/inspiral/inspinj.c
+++ b/lalapps/src/inspiral/inspinj.c
@@ -551,6 +551,7 @@ static void print_usage(char *program)
       "  --d-distr distDist       set the distance distribution of injections\n"\
       "                           source: take distance from galaxy source file\n"\
       "                           uniform: uniform distribution in distance\n"\
+      "                           distancesquared: uniform distribution in distance^2\n"\
       "                           log10: uniform distribution in log10(d) \n"\
       "                           volume: uniform distribution in volume\n"\
       "                           sfr: distribution derived from the SFR\n"\
@@ -1963,6 +1964,10 @@ int main( int argc, char *argv[] )
         {
           dDistr=uniformDistance;
         }
+        else if (!strcmp(dummy, "distancesquared"))
+        {
+          dDistr=uniformDistanceSquared;
+        }
         else if (!strcmp(dummy, "log10"))
         {
           dDistr=uniformLogDistance;
@@ -1979,7 +1984,7 @@ int main( int argc, char *argv[] )
         {
           fprintf( stderr, "invalid argument to --%s:\n"
               "unknown source distribution: "
-              "%s, must be one of (uniform, log10, volume, source)\n",
+              "%s, must be one of (uniform, distancesquared, log10, volume, source, sfr)\n",
               long_options[option_index].name, optarg );
           exit( 1 );
         }
diff --git a/lalinspiral/src/InspiralInjectionParams.c b/lalinspiral/src/InspiralInjectionParams.c
index 48c989831d309c702a9f2f3734875098f1e078be..e1fd1908a48576d7c995e5b800e22d6b6c95ea8b 100644
--- a/lalinspiral/src/InspiralInjectionParams.c
+++ b/lalinspiral/src/InspiralInjectionParams.c
@@ -92,6 +92,16 @@ SimInspiralTable* XLALRandomInspiralDistance(
   else if (dDist == uniformVolume )
   {
     /* uniform volume distribution */
+    REAL4 d3min = distMin * distMin * distMin;
+    REAL4 d3max = distMax * distMax * distMax;
+    REAL4 deltad3 = d3max - d3min ;
+    REAL4 d3;
+    d3 = d3min + deltad3 * XLALUniformDeviate( randParams );
+    inj->distance = cbrt( d3 );
+  }
+  else if (dDist == uniformDistanceSquared)
+  {
+    /* uniform distance^2 distribution */
     REAL4 d2min = distMin * distMin ;
     REAL4 d2max = distMax * distMax ;
     REAL4 deltad2 = d2max - d2min ;
diff --git a/lalinspiral/src/InspiralInjectionParams.h b/lalinspiral/src/InspiralInjectionParams.h
index 4bfe645add360de68920e80afa30a2d0af15db61..aadc14eb1d2d5cc09b154148c93a9e38e2beef13 100644
--- a/lalinspiral/src/InspiralInjectionParams.h
+++ b/lalinspiral/src/InspiralInjectionParams.h
@@ -29,6 +29,7 @@ typedef enum
   unknownDistanceDist,
   distFromSourceFile,
   uniformDistance,
+  uniformDistanceSquared,
   uniformLogDistance,
   uniformVolume,
   sfr