diff --git a/Trajectories/Tests/tests.json b/Trajectories/Tests/tests.json
index ddbe3827b27884d314743a1e949ed7be4c34f0ac..f091ba8dcb9e94878903eaadbaf6efee96866cdc 100644
--- a/Trajectories/Tests/tests.json
+++ b/Trajectories/Tests/tests.json
@@ -43,7 +43,7 @@
             "$tests_old_dir/Extraction_eddies_region_2_noise/SHPC",
             "Anticyclones",
             "$tests_old_dir/Segments/segments.graphml",
-            "segments_cost_functions.graphml"
+            "segments_cost_functions.graphml", "--debug"
 	],
 	"exclude_cmp": [
             "timings.txt"
@@ -64,7 +64,7 @@
             "$tests_old_dir/Greece/SHPC",
             "Anticyclones",
             "$tests_old_dir/Greece_segments/segments.graphml",
-            "segments_cost_functions.graphml"
+            "segments_cost_functions.graphml", "--debug"
 	],
 	"exclude_cmp": [
             "timings.txt"
diff --git a/Trajectories/cost_function.py b/Trajectories/cost_function.py
index 12fe16d7ec0a0bed7eeafe8bb8527b70c2f66921..17a3696480b122b8f0bf7b68e550dadd3ab31336 100755
--- a/Trajectories/cost_function.py
+++ b/Trajectories/cost_function.py
@@ -92,6 +92,8 @@ parser.add_argument("input_segments", help = "input graph of segments without "
                     "cost, suffix .gt (graph-tool) or .graphml")
 parser.add_argument("output_segments", help = "output graph of segments with "
                     "cost, suffix .gt (graph-tool) or .graphml")
+parser.add_argument("--debug", help = "save properties to output file",
+                    action = "store_true")
 args = parser.parse_args()
 
 # Set some values needed for the cost function:
@@ -116,12 +118,21 @@ t1 = time.perf_counter()
 timings.write(f"loading: {t1 - t0:.0f} s\n")
 t0 = t1
 
-g.vp['pos_first'] = g.new_vp('vector<double>')
-g.vp['pos_last'] = g.new_vp('vector<double>')
-g.vp['first_av_rad'] = g.new_vp('float')
-g.vp['first_av_ros'] = g.new_vp('float')
-g.vp['last_av_rad'] = g.new_vp('float')
-g.vp['last_av_ros'] = g.new_vp('float')
+pos_first = g.new_vp('vector<double>')
+pos_last = g.new_vp('vector<double>')
+first_av_rad = g.new_vp('float')
+first_av_ros = g.new_vp('float')
+last_av_rad = g.new_vp('float')
+last_av_ros = g.new_vp('float')
+
+if args.debug:
+    g.vp['pos_first'] = pos_first
+    g.vp['pos_last'] = pos_last
+    g.vp['first_av_rad'] = first_av_rad
+    g.vp['first_av_ros'] = first_av_ros
+    g.vp['last_av_rad'] = last_av_rad
+    g.vp['last_av_ros'] = last_av_ros
+
 g.ep['cost_function'] = g.new_ep('float')
 SHPC = util_eddies.SHPC_class(args.SHPC_dir, args.orientation)
 n_days_avg = 7 # number of days to average
@@ -132,9 +143,8 @@ for n in g.vertices():
         # Define properties for beginning of the segment:
         properties = node_to_prop(g.vp.inst_eddies[n][:n_days_avg],
                                   g.gp.e_overestim, SHPC, args.orientation)
-        g.vp.first_av_rad[n], g.vp.first_av_ros[n] \
-            = calculate_radii_rossby(properties)
-        g.vp.pos_first[n] = properties[0]["pos"] # in degrees
+        first_av_rad[n], first_av_ros[n] = calculate_radii_rossby(properties)
+        pos_first[n] = properties[0]["pos"] # in degrees
 
     if n.out_degree() != 0:
         # Define properties for end of the segment:
@@ -161,17 +171,16 @@ for n in g.vertices():
                     + node_to_prop(g.vp.inst_eddies[n][n_days_avg:],
                                    g.gp.e_overestim, SHPC, args.orientation)
 
-            g.vp.last_av_rad[n], g.vp.last_av_ros[n] \
-                = calculate_radii_rossby(properties)
+            last_av_rad[n], last_av_ros[n] = calculate_radii_rossby(properties)
         else:
             # The number of eddies in the segment is lower than or
             # equal to the number of days over which to average. The
             # values for the end of the segment will be the same as
             # for the begining, except for the position.
-            g.vp.last_av_rad[n] = g.vp.first_av_rad[n]
-            g.vp.last_av_ros[n] = g.vp.first_av_ros[n]
+            last_av_rad[n] = first_av_rad[n]
+            last_av_ros[n] = first_av_ros[n]
 
-        g.vp.pos_last[n] = properties[- 1]["pos"] # in degrees
+        pos_last[n] = properties[- 1]["pos"] # in degrees
 
 t1 = time.perf_counter()
 timings.write(f"iterating on vertices: {t1 - t0:.0f} s\n")
@@ -182,31 +191,28 @@ for edge in g.edges():
     source_node = edge.source()
     target_node = edge.target()
 
-    latitude = math.radians((g.vp.pos_last[source_node][1] +
-                             g.vp.pos_first[target_node][1]) / 2)
+    latitude = math.radians((pos_last[source_node][1] +
+                             pos_first[target_node][1]) / 2)
     # (latitude needed for conversion of degrees to kilometers)
 
     # Because of the wrapping issue (360° wrapping incorrectly to 0°),
     # we check for that here:
-    lon_diff = abs(g.vp.pos_last[source_node][0]
-                   - g.vp.pos_first[target_node][0])
+    lon_diff = abs(pos_last[source_node][0] - pos_first[target_node][0])
     if lon_diff > 300: lon_diff = 360 - lon_diff
 
     Delta_Cent = math.sqrt((lon_diff * 111.32 * math.cos(latitude))**2
-                           + ((g.vp.pos_last[source_node][1]
-                               - g.vp.pos_first[target_node][1]) * 110.574)**2)
+                           + ((pos_last[source_node][1]
+                               - pos_first[target_node][1]) * 110.574)**2)
 
     # Rossbies:
-    if (g.vp.first_av_ros[target_node] and g.vp.last_av_ros[source_node]):
-        Delta_Ro = g.vp.last_av_ros[source_node] \
-            - g.vp.first_av_ros[target_node]
+    if (first_av_ros[target_node] and last_av_ros[source_node]):
+        Delta_Ro = last_av_ros[source_node] - first_av_ros[target_node]
     else:
         # At least one of the rossbies is invalid.
         Delta_Ro = 0
 
     # R_Vmax 1 and 2 already exist, just get the delta
-    Delta_R_Vmax = g.vp.last_av_rad[source_node] \
-        - g.vp.first_av_rad[target_node]
+    Delta_R_Vmax = last_av_rad[source_node] - first_av_rad[target_node]
 
     # Calculate the cost and assign to the edge:
     g.ep.cost_function[edge] \