diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java
index 59387fcd450d42bd146496823a9e56122e8d131e..dd59717afd96208dc9e6e6dfb2734cc2617f9607 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java
@@ -301,7 +301,7 @@ public class DisaggCalc {
     Files.createDirectory(disaggDir);
 
     Stopwatch stopwatch = Stopwatch.createStarted();
-    int logInterval = sites.size() > 1000 ? 100 : sites.size() > 100 ? 10 : 1;
+    int logInterval = sites.size() < 100 ? 1 : sites.size() < 1000 ? 10 : 100;
 
     for (int i = 0; i < sites.size(); i++) {
       Site site = sites.get(i);
@@ -397,7 +397,7 @@ public class DisaggCalc {
     Files.createDirectory(disaggDir);
 
     Stopwatch stopwatch = Stopwatch.createStarted();
-    int logInterval = sites.size() > 1000 ? 100 : sites.size() > 100 ? 10 : 1;
+    int logInterval = sites.size() < 100 ? 1 : sites.size() < 1000 ? 10 : 100;
 
     for (int i = 0; i < sites.size(); i++) {
 
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java
index 94b501ffb7d7ded3226a15c8d58be92633fb881b..9815cc2b2fe31faf43c60920ed99c5d603609ffd 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java
@@ -21,6 +21,7 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.logging.FileHandler;
 import java.util.logging.Logger;
 
+import com.google.common.base.Stopwatch;
 import com.google.common.base.Throwables;
 import com.google.common.util.concurrent.MoreExecutors;
 
@@ -175,10 +176,19 @@ public class HazardCalc {
     CalcTask.Builder calcTask = new CalcTask.Builder(model, config, exec);
     WriteTask.Builder writeTask = new WriteTask.Builder(handler);
 
+    Stopwatch stopwatch = Stopwatch.createStarted();
+    int logInterval = sites.size() < 100 ? 1 : sites.size() < 1000 ? 10 : 100;
+
     Future<Path> out = null;
-    for (Site site : sites) {
+    for (int i = 0; i < sites.size(); i++) {
+      Site site = sites.get(i);
       Hazard hazard = calcTask.withSite(site).call();
       out = exec.submit(writeTask.withResult(hazard));
+      if (i % logInterval == 0) {
+        log.info(String.format(
+            "     %s of %s sites completed in %s",
+            i + 1, sites.size(), stopwatch));
+      }
     }
     /* Block shutdown until last task is returned. */
     Path outputDir = out.get();