Index: /trunk/ippScripts/scripts/camera_exp.pl
===================================================================
--- /trunk/ippScripts/scripts/camera_exp.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/camera_exp.pl	(revision 12421)
@@ -125,13 +125,13 @@
 }
 
+# Set output directory
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    $workdir = File::Spec->catdir( $workdir, $exp_id );
 } else {
-    my $example = ${$files}[0]->{path_base}; # Example original root name
-    my ($vol, $dir, $file) = File::Spec->splitpath( $ipprc->convert_filename_absolute( $example ) );
+    my $example = $ipprc->convert_filename_absolute( ${$files}[0]->{path_base}) ; # Example original name
+    my ($vol, $dir, $file) = File::Spec->splitpath( $example );
     $workdir = $dir;
 }
-
-$workdir = File::Spec->catfile( $workdir, $exp_id );
 system "mkdir -p $workdir" unless -d $workdir;
 
Index: /trunk/ippScripts/scripts/chip_imfile.pl
===================================================================
--- /trunk/ippScripts/scripts/chip_imfile.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/chip_imfile.pl	(revision 12421)
@@ -80,12 +80,12 @@
 $input = $ipprc->convert_filename_absolute( $input );
 
+# Set output directory
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    $workdir = File::Spec->catdir( $workdir, $exp_id );
 } else {
     my ($vol, $dir, $file) = File::Spec->splitpath( $input );
     $workdir = $dir;
 }
-
-$workdir = File::Spec->catfile( $workdir, $exp_id );
 system "mkdir -p $workdir" unless -d $workdir;
 
Index: /trunk/ippScripts/scripts/detrend_norm_apply.pl
===================================================================
--- /trunk/ippScripts/scripts/detrend_norm_apply.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/detrend_norm_apply.pl	(revision 12421)
@@ -82,16 +82,20 @@
 }
 
+$input = $ipprc->convert_filename_absolute( $input );
+
+# Set output directory
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    my $subdir = "$camera.$det_type.$det_id";
+    $workdir = File::Spec->catdir( $workdir, $subdir );
 } else {
     my ($vol, $dir, $file) = File::Spec->splitpath( $input );
     $workdir = $dir;
 }
-$input = $ipprc->convert_filename_absolute( $input );
+system "mkdir -p $workdir" unless -d $workdir;
 
 # Output name
 my $outputFile = "$camera.$det_type.norm.$det_id.$iter"; # Root name
-my $outputSubD = "$camera.$det_type.$det_id";
-my $outputRoot = File::Spec->catfile( $workdir, $outputSubD, $outputFile );
+my $outputRoot = File::Spec->catfile( $workdir, $outputFile );
 
 my $output = $ipprc->filename("PPIMAGE.OUTPUT", $outputRoot, $class_id);
Index: /trunk/ippScripts/scripts/detrend_norm_exp.pl
===================================================================
--- /trunk/ippScripts/scripts/detrend_norm_exp.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/detrend_norm_exp.pl	(revision 12421)
@@ -115,6 +115,9 @@
 }
 
+# Set output directory
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    my $subdir = "$camera.$det_type.$det_id";
+    $workdir = File::Spec->catdir( $workdir, $subdir );
 } else {
     my $example = ${$files}[0]->{path_base}; # Example file, for path
@@ -122,9 +125,9 @@
     $workdir = $dir;
 }
+system "mkdir -p $workdir" unless -d $workdir;
 
 # Generate the file list, and get the statistics
 my $outputFile = "$camera.$det_type.norm.$det_id.$iter"; # Root output name
-my $outputSubD = "$camera.$det_type.$det_id";
-my $outputRoot = File::Spec->catfile( $workdir, $outputSubD, $outputFile );
+my $outputRoot = File::Spec->catfile( $workdir, $outputFile );
 
 my $list1Name = $outputRoot . '.b1.list'; # Name for the input file list for binning 1
Index: /trunk/ippScripts/scripts/detrend_process_exp.pl
===================================================================
--- /trunk/ippScripts/scripts/detrend_process_exp.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/detrend_process_exp.pl	(revision 12421)
@@ -113,13 +113,18 @@
 }
 
+# Set output directory
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    my $subdir = "$camera.$det_type.$det_id";
+    $workdir = File::Spec->catdir( $workdir, $subdir, $exp_tag );
 } else {
-    my $example = ${$files}[0]->{path_base}; # Example original root name
+    my $example = $ipprc->convert_filename_absolute( ${$files}[0]->{path_base} ); # Example original name
     my ($vol, $dir, $file) = File::Spec->splitpath( $example );
     $workdir = $dir;
 }
+system "mkdir -p $workdir" unless -d $workdir;
+
 my $outputFile = $exp_tag . '.detproc.' . $det_id; # Root name
-my $outputRoot = File::Spec->catfile( $workdir, $exp_tag, $outputFile );
+my $outputRoot = File::Spec->catfile( $workdir, $outputFile );
 
 # output files:
Index: /trunk/ippScripts/scripts/detrend_process_imfile.pl
===================================================================
--- /trunk/ippScripts/scripts/detrend_process_imfile.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/detrend_process_imfile.pl	(revision 12421)
@@ -88,20 +88,24 @@
 }
 
-### Output file name
+$input_uri = $ipprc->convert_filename_absolute( $input_uri );
+
+# Set output directory
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    my $subdir = "$camera.$det_type.$det_id";
+    $workdir = File::Spec->catdir( $workdir, $subdir, $exp_tag );
 } else {
     my ($vol, $dir, $file) = File::Spec->splitpath( $input_uri );
     $workdir = $dir;
 }
+system "mkdir -p $workdir" unless -d $workdir;
+
+# Output files
 my $outputFile = "$exp_tag.detproc.$det_id"; # Root name
-my $outputRoot = File::Spec->catfile( $workdir, $exp_tag, $outputFile );
+my $outputRoot = File::Spec->catfile( $workdir, $outputFile );
 my $outputImage = $ipprc->filename("PPIMAGE.OUTPUT", $outputRoot, $class_id);
 my $outputBin1 = $ipprc->filename("PPIMAGE.BIN1", $outputRoot, $class_id);
 my $outputBin2 = $ipprc->filename("PPIMAGE.BIN2", $outputRoot, $class_id);
-
 my $outputStats = $outputRoot . '.' . $class_id . '.stats';
-
-$input_uri = $ipprc->convert_filename_absolute( $input_uri );
 
 # Run ppImage
Index: /trunk/ippScripts/scripts/detrend_reject_imfile.pl
===================================================================
--- /trunk/ippScripts/scripts/detrend_reject_imfile.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/detrend_reject_imfile.pl	(revision 12421)
@@ -93,15 +93,19 @@
 }
 
+# Set output directory
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    my $subdir = "$camera.$det_type.$det_id";
+    $workdir = File::Spec->catdir( $workdir, $subdir, $exp_tag );
 } else {
-    my $example = ${$files}[0]->{path_base}; # Example original root name
+    my $example = $ipprc->convert_filename_absolute( ${$files}[0]->{path_base} ); # Example original name
     my ($vol, $dir, $file) = File::Spec->splitpath( $example );
     $workdir = $dir;
 }
+system "mkdir -p $workdir" unless -d $workdir;
 
 # Generate the file list, and get the statistics
 my $outputFile = "$exp_tag.detresid.$det_id.$iter"; # Root name
-my $outputRoot = File::Spec->catfile( $workdir, $exp_tag, $outputFile );
+my $outputRoot = File::Spec->catfile( $workdir, $outputFile );
 
 my $list1Name = $outputRoot . '.b1.list'; # Name for the input file list for binning 1
Index: /trunk/ippScripts/scripts/detrend_resid.pl
===================================================================
--- /trunk/ippScripts/scripts/detrend_resid.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/detrend_resid.pl	(revision 12421)
@@ -118,14 +118,17 @@
 &my_die("Unrecognised detrend type: $det_type", $det_id, $iter, $exp_tag, $class_id, $PS_EXIT_PROG_ERROR) unless defined $recipe;
 
-### Output file names --- must match camera configuration!
+# Set output directory
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    my $subdir = "$camera.$det_type.$det_id";
+    $workdir = File::Spec->catdir( $workdir, $subdir, $exp_tag );
 } else {
-    my ($vol, $dir, $file) = File::Spec->splitpath( $input_uri );
+    my ($vol, $dir, $file) = File::Spec->splitpath( $ipprc->convert_filename_absolute( $input_uri ) );
     $workdir = $dir;
 }
+system "mkdir -p $workdir" unless -d $workdir;
 
 my $outputFile = "$exp_tag.detresid.$det_id.$iter"; # Root name
-my $outputRoot = File::Spec->catfile( $workdir, $exp_tag, $outputFile );
+my $outputRoot = File::Spec->catfile( $workdir, $outputFile );
 
 my $outputName = $ipprc->filename("PPIMAGE.OUTPUT", $outputRoot, $class_id);
Index: /trunk/ippScripts/scripts/detrend_stack.pl
===================================================================
--- /trunk/ippScripts/scripts/detrend_stack.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/detrend_stack.pl	(revision 12421)
@@ -98,11 +98,15 @@
 }
 
+# Set output directory
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    my $subdir = "$camera.$det_type.$det_id";
+    $workdir = File::Spec->catdir( $workdir, $subdir );
 } else {
-    my $example = ${$files}[0]->{uri}; # Example file
+    my $example = $ipprc->convert_filename_absolute( ${$files}[0]->{uri} ); # Example file
     my ($vol, $dir, $file) = File::Spec->splitpath( $example );
     $workdir = $dir;
 }
+system "mkdir -p $workdir" unless -d $workdir;
 
 # Stack the files
Index: /trunk/ippScripts/scripts/diff_skycell.pl
===================================================================
--- /trunk/ippScripts/scripts/diff_skycell.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/diff_skycell.pl	(revision 12421)
@@ -113,14 +113,13 @@
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    $workdir = File::Spec->catdir( $workdir, "tess_" . $tess_id, "sky_" . $skycell_id );
 } else {
     my ($vol, $dir, $file) = File::Spec->splitpath( $input );
     $workdir = $dir;
 }
-
-$workdir = File::Spec->catfile( $workdir, "sky$skycell_id" );
 system "mkdir -p $workdir" unless -d $workdir;
 
 # Get the output filenames
-my $outputFile = "sky$skycell_id.dif$diff_id"; # Root name
+my $outputFile = "$tess_id.$skycell_id.dif$diff_id"; # Root name
 my $outputRoot = File::Spec->catfile( $workdir, $outputFile );
 
@@ -133,5 +132,5 @@
 my $stats = PS::IPP::Metadata::Stats->new(); # Stats parser
 unless ($no_op) {
-    my $command = "$pois $template $input $outputName"; # Command to run pois
+    my $command = "$pois -v $template $input $outputName"; # Command to run pois
 
     my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
Index: /trunk/ippScripts/scripts/stack_skycell.pl
===================================================================
--- /trunk/ippScripts/scripts/stack_skycell.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/stack_skycell.pl	(revision 12421)
@@ -107,14 +107,13 @@
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    $workdir = File::Spec->catdir( $workdir, "tess_" . $tess_id, "sky_" . $skycell_id );
 } else {
     my ($vol, $dir, $file) = File::Spec->splitpath( $ipprc->convert_filename_absolute( $$files[0]->{uri} ) );
     $workdir = $dir;
 }
-
-$workdir = File::Spec->catfile( $workdir, "sky$skycell_id" );
 system "mkdir -p $workdir" unless -d $workdir;
 
 # Get the output filenames
-my $outputFile = "sky$skycell_id.stk$stack_id"; # Root name
+my $outputFile = "$tess_id.$skycell_id.stk$stack_id"; # Root name
 my $outputRoot = File::Spec->catfile( $workdir, $outputFile );
 
Index: /trunk/ippScripts/scripts/warp_overlap.pl
===================================================================
--- /trunk/ippScripts/scripts/warp_overlap.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/warp_overlap.pl	(revision 12421)
@@ -78,4 +78,14 @@
 }
 
+# Make sure everything is from the same exposure, and get the exposure tag
+my $exp_tag;			# Exposure tag
+foreach my $imfile ( @$imfiles ) {
+    unless (defined $exp_tag) {
+	$exp_tag = $imfile->{exp_tag};
+    } elsif ($exp_tag ne $imfile->{exp_tag}) {
+	&my_die("Multiple exposures in the same warp.", $warp_id, $PS_EXIT_SYS_ERROR);
+    }
+}
+
 unless ($no_op) {
 
@@ -93,4 +103,5 @@
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    $workdir = File::Spec->catdir( $workdir, $exp_tag );
 } else {
     my $example = $ipprc->convert_filename_absolute( $$imfiles[0]->{uri} );
@@ -98,6 +109,4 @@
     $workdir = $dir;
 }
-
-$workdir = File::Spec->catfile( $workdir, "warp$warp_id" );
 system "mkdir -p $workdir" unless -d $workdir;
 
@@ -108,11 +117,10 @@
 foreach my $imfile (@$imfiles) {
     print $overlapFile "warpSkyCellMap\tMETADATA\n";
-    print $overlapFile "\twarp_id\tS32\t" . $warp_id . "\n";
+    print $overlapFile "\twarp_id\t\tS32\t" . $warp_id . "\n";
     print $overlapFile "\tskycell_id\tSTR\t" . $imfile->{skycell_id} . "\n";
     print $overlapFile "\ttess_id\t\tSTR\t" . $imfile->{tess_id} . "\n";
-    print $overlapFile "\texp_tag\t\tSTR\t" . $imfile->{exp_tag} . "\n";
-    print $overlapFile "\tcam_version\tS32\t" . $imfile->{cam_version} . "\n";
-    print $overlapFile "\tclass_id\t\tSTR\t" . $imfile->{class_id} . "\n";
-    print $overlapFile "\tfault\tS16\t" . $imfile->{fault} . "\n";
+    print $overlapFile "\tcam_id\t\tS32\t" . int($imfile->{cam_id}) . "\n";
+    print $overlapFile "\tclass_id\tSTR\t" . $imfile->{class_id} . "\n";
+    print $overlapFile "\tfault\t\tS16\t" . $imfile->{fault} . "\n";
     print $overlapFile "END\n\n";
 }
Index: /trunk/ippScripts/scripts/warp_skycell.pl
===================================================================
--- /trunk/ippScripts/scripts/warp_skycell.pl	(revision 12420)
+++ /trunk/ippScripts/scripts/warp_skycell.pl	(revision 12421)
@@ -84,7 +84,8 @@
 }
 
-### Output file name
+# Set output directory
 if (defined $workdir) {
     $workdir = $ipprc->convert_filename_absolute( $workdir );
+    $workdir = File::Spec->catdir( $workdir, "tess_" . $tess_id, "sky_" . $skycell_id );
 } else {
     my $example = $ipprc->convert_filename_absolute( $$imfiles[0]->{uri} );
@@ -92,9 +93,7 @@
     $workdir = $dir;
 }
-
-$workdir = File::Spec->catfile( $workdir, "sky$skycell_id" );
 system "mkdir -p $workdir" unless -d $workdir;
 
-my $outputFile = "sky$skycell_id.wrp$warp_id"; # Root name
+my $outputFile = "$tess_id.$skycell_id.wrp$warp_id"; # Root name
 my $outputRoot = File::Spec->catfile( $workdir, $outputFile );
 my $outputImage = $ipprc->filename("PSWARP.OUTPUT", $outputRoot, $skycell_id );
