Index: src/org/openstreetmap/josm/plugins/pbf/io/PbfWriter.java
===================================================================
--- src/org/openstreetmap/josm/plugins/pbf/io/PbfWriter.java	(revision 35428)
+++ src/org/openstreetmap/josm/plugins/pbf/io/PbfWriter.java	(working copy)
@@ -485,9 +485,9 @@
         public void process(DataSet ds) {
             processor.processSources(ds.getDataSources());
             Comparator<OsmPrimitive> cmp = Comparator.comparingLong(OsmPrimitive::getUniqueId);
-            ds.getNodes().stream().sorted(cmp).filter(n -> n.isLatLonKnown()).forEach(processor::processNode);
-            ds.getWays().stream().sorted(cmp).filter(w -> w.getNodesCount() > 0).forEach(processor::processWay);
-            ds.getRelations().stream().sorted(cmp).filter(r -> r.getMembersCount() > 0).forEach(processor::processRelation);
+            ds.getNodes().stream().sorted(cmp).filter(n -> shouldWrite(n)).forEach(processor::processNode);
+            ds.getWays().stream().sorted(cmp).filter(w -> shouldWrite(w)).forEach(processor::processWay);
+            ds.getRelations().stream().sorted(cmp).filter(r -> shouldWrite(r)).forEach(processor::processRelation);
         }
 
         public void complete() {
@@ -499,6 +499,12 @@
                 throw new RuntimeException("Unable to complete the PBF file.", e);
             }
         }
+
+        private static boolean shouldWrite(OsmPrimitive osm) {
+            // see OsmWriter
+            return (!osm.isNewOrUndeleted() || !osm.isDeleted()) && !osm.isIncomplete();
+        }
+
     }
 
     /**
