   Tsunami.setFrequency(1000.0);
   delay(100);
   assert_nearly_equal("input_freq_1k", (int32_t)Tsunami.measureFrequency(), 1000l, 2l);
-  assert_nearly_equal("input_phase_1k", (int16_t)(1000 * Tsunami.measurePhase()), 0, 50);
+  assert_nearly_equal("input_phase_1k", (int16_t)(1000 * Tsunami.measurePhase()), 30, 30);
 
   Tsunami.setFrequency(100000.0);
   delay(100);
   assert_nearly_equal("input_freq_100k", (int32_t)Tsunami.measureFrequency(), 100000l, 2l);
-  assert_nearly_equal("input_phase_100k", (int16_t)(1000 * Tsunami.measurePhase()), 200, 50);
+  assert_nearly_equal("input_phase_100k", (int16_t)(1000 * Tsunami.measurePhase()), 210, 25);
 
   Tsunami.setFrequency(1000000.0);
   // Reset phase counter for sensitive measurement
   Tsunami.reset(true); Tsunami.reset(false);
   delay(100);
   assert_nearly_equal("input_freq_1m", (int32_t)Tsunami.measureFrequency(), 1000000l, 2l);
-  assert_nearly_equal("input_phase_1m", (int16_t)(1000 * Tsunami.measurePhase()), 1000, 50);
+  assert_nearly_equal("input_phase_1m", (int16_t)(1000 * Tsunami.measurePhase()), 999, 2);
 }
 
 test_t tests[] = {

  int offset = Tsunami.measureCurrentVoltage();
  Tsunami.setOffset(-1000);
  delay(200);
  assert_nearly_equal("output_offset_neg", Tsunami.measureCurrentVoltage(), offset - 1325, 100);
  Tsunami.setOffset(1000);
  delay(200);
  assert_nearly_equal("output_offset_pos", Tsunami.measureCurrentVoltage(), offset + 1325, 100);
  return true;
}


bool test_zero_offset() {
  Tsunami.measureCurrentVoltage();
  delay(200);
  assert_nearly_equal("input_offset", Tsunami.measureCurrentVoltage(), 25, 125);
  return true;
}

