The half-diamond on the left indicates that the property is being interpolated linearly, coming into that keyframe. If the value of the last keyframe to the left of the hold keyframe doesn't match the held value, the value of the property will change linearly until the hold, and then stay constant until the next keyframe.
This is something I can't work out at all how to fix - I have done this process numerous times and not sure why the keyframes have this glitch all of a sudden.
Essentially all I am doing is animating the keyframes for Trapcode Particular from for example 400 to 0 then putting a toggle hold on the 0 keyframe so I can do the usual looping process for Particular. Even if I don't change this to a toggle hold it's doing a half and half diamond keyframe. I can't seem to get this working at all...
Imagine the icons for keyframes are divided right down the center into a left half and a right half. The shape of the left half indicates the interpolation type coming into the keyframe, and the shape of the right half indicates the interpolation type going out of the keyframe. This is a visual indicator of how Ae will do the tweening if the value of the property changes at the keyframes.
The half-diamond indicates linear interpolation, or constant rate of change. The half-square indicates hold interpolation, or no change at all until the next keyframe. The half-hourglass curve indicates Bezier interpolation, or interpolation governed by Bezier curves.
What you are seeing in your screenshot is not a glitch. It's correct. You want the value to change coming into the keyframe (otherwise you can't ramp down from 400 to 0), and you might want the value to hold coming out of it (to ensure that the zero "sticks" even if you put another keyframe after it, until time reaches that next keyframe).
If you're having a problem getting the values you want, maybe you can post your AEP and one of us can take a look.