diff --git a/edosl0util/cli/rdrgen.py b/edosl0util/cli/rdrgen.py
index ed756bb67e6fe33cd69a83f72f649e22c9ca2cce..85a08115ca2560bbbcf5d0285c8ca152bea458e7 100644
--- a/edosl0util/cli/rdrgen.py
+++ b/edosl0util/cli/rdrgen.py
@@ -5,17 +5,29 @@ from edosl0util.rdrgen import packets_to_rdrs
 def main():
     parser = util.default_parser(description=__doc__)
     parser.add_argument(
-        '--aggr', type=int,
-        help='Number of aggregation granules used to determine alignment')
+        '--aggr-type', choices=['idps', 'full'], default='idps',
+        help=(
+            'Aggregation type to perform. Use idps to have the aggregation buckets '
+            'determined by the same method IDPS uses, or full to create a single '
+            'large RDR containg all the data.'
+        )
+    )
+    g = parser.add_mutually_exclusive_group()
+    g.add_argument(
+        '--aggr-level', type=int,
+        help='Number of aggregation granules used to determine alignment. Only used for type = idps.')
+    g.add_argument('--aggr', type=int, help='Deprecated, use --aggr-level')
     parser.add_argument('sat', choices=['snpp', 'j01'])
     parser.add_argument('pds', nargs='+')
     args = parser.parse_args()
     util.configure_logging(args)
 
-    if args.aggr:
-        packets_to_rdrs(args.sat, args.pds, aggr_level=args.aggr)
+    level = args.aggr_level or args.aggr
+
+    if level:
+        packets_to_rdrs(args.sat, args.pds, aggr_type=args.aggr_type, aggr_level=level)
     else:
-        packets_to_rdrs(args.sat, args.pds)
+        packets_to_rdrs(args.sat, args.pds, aggr_type=args.aggr_type)
 
 
 if __name__ == '__main__':