diff --git a/Filters/Hybrid/Testing/Cxx/TestTemporalArrayOperatorFilter.cxx b/Filters/Hybrid/Testing/Cxx/TestTemporalArrayOperatorFilter.cxx
index e64870798206af41fd066f396cd4b90a68553a36..6f940ff3a30c5bd5edac34a2b6ea1774d4a57aea 100644
--- a/Filters/Hybrid/Testing/Cxx/TestTemporalArrayOperatorFilter.cxx
+++ b/Filters/Hybrid/Testing/Cxx/TestTemporalArrayOperatorFilter.cxx
@@ -96,7 +96,7 @@ int TestTemporalArrayOperatorFilter(int, char*[])
 
   double range[2];
   diff->GetPointData()->GetArray("timeData")->GetRange(range);
-  if (range[0] != 0 && range[1] != 20)
+  if (range[0] != 3 && range[1] != 83)
   {
     std::cerr << "Bad initial range:" << range[0] << ";" << range[1] << endl;
     return EXIT_FAILURE;
diff --git a/Filters/Hybrid/vtkTemporalArrayOperatorFilter.cxx b/Filters/Hybrid/vtkTemporalArrayOperatorFilter.cxx
index 3485648a8e43956601ada30a72211c6b19ba947c..6d55053bf255ff5fd2f9ba4e0f1f94865800de01 100644
--- a/Filters/Hybrid/vtkTemporalArrayOperatorFilter.cxx
+++ b/Filters/Hybrid/vtkTemporalArrayOperatorFilter.cxx
@@ -275,7 +275,7 @@ vtkDataObject* vtkTemporalArrayOperatorFilter::ProcessDataObject(
 
   // Copy input structure into output
   vtkDataObject* outputDataObject = inputData0->NewInstance();
-  outputDataObject->ShallowCopy(inputData1);
+  outputDataObject->ShallowCopy(inputData0);
 
   vtkSmartPointer<vtkDataArray> outputArray;
   outputArray.TakeReference(this->ProcessDataArray(inputArray0, inputArray1));
diff --git a/Filters/Hybrid/vtkTemporalArrayOperatorFilter.h b/Filters/Hybrid/vtkTemporalArrayOperatorFilter.h
index c1a950b31a5f4ead6690e060acf46d26d4e970fe..84eae0635c935dd13d327aadd63834cbec88bb62 100644
--- a/Filters/Hybrid/vtkTemporalArrayOperatorFilter.h
+++ b/Filters/Hybrid/vtkTemporalArrayOperatorFilter.h
@@ -6,6 +6,7 @@
  *
  * This filter computes a simple operation between two time steps of one
  * data array.
+ * The mesh of the first time step is used.
  *
  * @sa
  * vtkArrayCalulator